Youtube Data API - 如何避免 Google OAuth 重定向 URL 授权

Posted

技术标签:

【中文标题】Youtube Data API - 如何避免 Google OAuth 重定向 URL 授权【英文标题】:Youtube Data API - How to avoid Google OAuth redirect URL authorization 【发布时间】:2015-09-24 12:43:08 【问题描述】:

要求:我正在尝试通过 Youtube Data API for Java 将视频上传到我的 Youtube 频道。该请求是从托管在 tomcat 容器上的 war 文件发送的。我的应用程序不适用于外部用户,我只使用它来上传我自己生成的视频。在 api 文档和示例 youtube 代码 sn-ps 的帮助下,我成功地在 youtube 上发布了视频。

问题:问题是每当我尝试运行代码时,我都会收到提示

请在浏览器中打开以下地址: https://accounts.google.com/o/oauth2/auth?client_id=&redirect_uri=http://localhost:8080/Callback&response_type=code&scope=https://www.googleapis.com/auth/youtube.upload


由于我在远程服务器上运行此代码,因此我无法始终在浏览器上打开此 URL。由于我已经在 Google Console 中注册了我的网络应用程序,并获得了一对 Client ID 和 Secret 以及一个 JSON 文件,所以 Youtube 必须默认允许我发布视频以至少我的频道,不是吗?

我使用了 Auth.java 文件(在 youtube java 代码示例中提供),下面的代码就是发生这种情况的地方。

    // Authorize.
    return new AuthorizationCodeInstalledApp(flow, localReceiver).authorize("user@.com");

LocalServerReceiver localReceiver = new LocalServerReceiver.Builder().setPort(8080).build();

请在这里提供帮助,因为这真的占用了我很多开发时间。

【问题讨论】:

您能否更新一下您是如何获得永久访问令牌的? 还需要一个解决方案,你能分享一下代码吗?谢谢 【参考方案1】:

您应该只需要验证您的代码一次。当您的代码通过身份验证后,您将获得一个刷新令牌。然后,刷新令牌将允许您在下次运行代码时获取新的访问令牌。

YouTube api 没有服务帐户身份验证。您的代码必须第一次经过您的身份验证才能获得该刷新令牌。

我不是 Java 程序员,但通过快速查看文档,它看起来与我在.net 中所做的非常相似。您需要创建一个datastore 来存储第一个刷新令牌,然后您应该能够在将来运行您的代码而无需再次对其进行身份验证。

【讨论】:

感谢您给我指点,阅读您建议的链接并了解如何获取永久访问令牌。 我遇到了和你一样的问题,我无法在远程框中打开浏览器,你是如何获得永久令牌以及如何存储它的? 没有永久令牌之类的东西,您可以获得刷新令牌,这将允许您在需要时获得新的访问令牌。只要用户没有撤​​销刷新令牌,它们就有效。

以上是关于Youtube Data API - 如何避免 Google OAuth 重定向 URL 授权的主要内容,如果未能解决你的问题,请参考以下文章

YouTube Data API - 如何通过 API 获取“已保存的播放列表”

如何使用 YouTube Data API v3 更改页面结果

如何通过 YouTube Data API v3 从我自己的 YouTube 频道获取所有视频

Youtube [Data-API] LiveChat,登录用户为版主

如何从 Youtube Data API v3 获取最大搜索结果?

YouTube Data v3 API - 如何从频道请求所有视频?