How*_*ang 2 java credentials youtube-api youtube-data-api
我正在使用 YouTube 数据 API (Java) 将视频上传到我的 YouTube 频道。我在我的 Windows PC 上测试了它并且成功了。但示例中的授权通过打开浏览器窗口来登录 Google 来创建 Credential 实例。这在我的 Windows PC 上没问题,但我试图让这段代码在我只能通过 SSH 访问的远程 Linux 机器上运行。
我在 stackoverflow 上搜索了类似的问题,发现了完全相同的问题。但由于该问题没有 Google 工程师所需的特定标签,因此我将其作为新问题发布。
Youtube API V3 Java 任何可能无需调用浏览器上传视频
如果您有任何想法可以提供帮助,我将非常感激。谢谢。
我寻找实现这一目标的方法并找到了。我按照https://developers.google.com/identity/protocols/OAuth2ServiceAccount上的说明进行操作
您需要一个新的 OAuth 客户端 ID,并在开发者控制台 - API 和身份验证 - 凭据中将其设置为“服务帐户”,然后下载 P12 密钥。
您还需要从开发人员控制台将服务帐户的权限更改为“是所有者”。
然后更改代码
Credential credential = Auth.authorize(scopes, "uploadvideo");
Run Code Online (Sandbox Code Playgroud)
到
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();
Run Code Online (Sandbox Code Playgroud)
如上面的 URL 中所指定。emailAddress 是服务帐户的电子邮件地址,必须更改 P12 文件名,Collections.~~~ 应更改为范围(原始示例中的预制范围),最后 serviceAccountUser 应是您原始的 Gmail ID。
我按照上面的方法成功了,希望对你有帮助。