YouTube API v3 Java 授权

YouTube API v3 Java authorization

我正在使用 YouTube 数据 API (Java) 将视频上传到我的 YouTube 频道。 我已经在我的 Windows PC 上对其进行了测试并成功了。 但是示例中的授权通过打开浏览器 window 登录 Google 来创建 Credential 实例。 这在我的 Windows PC 上没问题,但我试图让这段代码在我只有 SSH 访问权限的远程 linux 机器上运行。

我在 Whosebug 上搜索了类似的问题,发现了完全相同的问题。但由于该问题没有 Google 工程师需要的特定标签,我将其作为新问题发布。

Youtube API V3 Java Any possible without invoking browser to upload video

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

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

ssh -ND 8080 用户@server.example.com 这设置了一个 SOCKS 代理。只需将浏览器的代理设置编辑为 IP: localhost 端口: 8080 即可通过 SSH 发送流量。

请记住,在您禁用代理之前,您浏览器的所有流量都通过代理,因此在您登录时不要做任何违反网络策略的事情。我可能建议使用 Chrome 的私有实例, 例如.

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

我寻找实现此目标的方法并找到了它。 我按照 https://developers.google.com/identity/protocols/OAuth2ServiceAccount

中的说明进行操作

您需要一个新的 OAuth 客户端 ID,并在 Developers Console - APIs & auth - Credentials 中将其设置为 "Service account",然后下载 P12 密钥。

您还需要从 Developers Console 将服务帐户的权限更改为 "Is owner"。

然后更改代码

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是service account的email地址,P12 filename一定要改,Collections.~~~应该改成scopes(原例子中的premade),最后serviceAccountUser应该是你原来的Gmail ID。

我用上面的方法成功了,希望对你有帮助。