YouTube API v3 Java授权

我正在使用YouTube数据API(Java)将video上传到我的YouTube频道。 我已经在我的Windows PC上测试过并成功了。 但是,示例中的授权通过打开浏览器窗口登录Google来创建Credential实例。 这在我的Windows PC上很好,但我试图让这个代码在我只有SSH访问权限的远程linux机器上工作。

我搜索了stackoverflow的类似问题,并找到了完全相同的问题。 但由于该问题没有Google工程师要求的特定标签,我将其作为一个新问题发布。

Youtube API V3 Java无需调用浏览器即可上传video

如果您有任何想法可以提供帮助,我将非常感激。 谢谢。

我找到了实现这一目标的方法并找到了它。 我按照https://developers.google.com/identity/protocols/OAuth2ServiceAccount上的说明操作

您需要一个新的OAuth客户端ID,并在开发人员控制台中将其设置为“服务帐户” – APIs&auth – Credentials,然后下载P12密钥。

您还需要从开发人员控制台将服务帐户的权限更改为“是所有者”。

然后更改代码

Credential credential = Auth.authorize(scopes, "uploadvideo"); 

 GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(emailAddress) .setServiceAccountPrivateKeyFromP12File(new File("MyProject.p12")) .setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN)) .setServiceAccountUser("user@example.com") .build(); 

如上面的URL中所指定。 emailAddress是服务帐户的电子邮件地址,必须更改P12文件名,集合.~~~应更改为范围(原始示例中的预制文件),最后serviceAccountUser应为您的原始Gmail ID。

我成功用上面的方法,希望它有所帮助。

您可以使用SSH作为代理,然后使用本地浏览器来使用该代理。

ssh -ND 8080 user@server.example.com设置SOCKS代理。 只需将浏览器的代理设置编辑为IP:localhost端口:8080,您的流量将通过SSH传输。

请记住,所有浏览器的流量都会通过代理,直到您将其禁用为止,因此在您登录时不要对网络策略执行任何操作。例如,我可能会建议您使用Chrome的私有实例。

注意:这可能不适用于域查找,因此您需要路由器的本地(到SSH主机)IP。