我正在使用YouTube数据API(Java)将视频上传到我的YouTube频道。 我在我的Windows PC上测试过并成功了。 但是,示例中的授权通过打开浏览器窗口登录Google来创建Credential实例。 这在我的Windows PC上很好,但是我试图让这个代码在我只能通过SSH访问的远程linux机器上运行。
我在stackoverflow中搜索了类似的问题,并找到了完全相同的问题。但由于该问题没有Google工程师要求的特定标签,我将其作为一个新问题发布。
Youtube API V3 Java Any possible without invoking browser to upload video
如果您有任何想法可以提供帮助,我将非常感激。 谢谢。
答案 0 :(得分:3)
我找到了实现这个目标的方法并找到了它。 我按照https://developers.google.com/identity/protocols/OAuth2ServiceAccount
上的说明进行操作您需要一个新的OAuth客户端ID,并将其设置为开发人员控制台中的“服务帐户” - API& auth - 凭据,然后下载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。
我成功完成了上述方法,希望有所帮助。
答案 1 :(得分:0)
您可以使用SSH作为代理,然后使用本地浏览器来使用该代理。
ssh -ND 8080 user@server.example.com 这设置了SOCKS代理。只需将浏览器的代理设置编辑为IP:localhost端口:8080,您的流量将通过SSH传输。
请记住,您的所有浏览器流量都会通过代理,直到您禁用它为止,因此在您登录时不要对网络策略执行任何操作。我可能会建议您使用私有实例例如,Chrome。
注意:这可能不适用于域查找,因此您需要路由器的本地(到SSH主机)IP。