我可以从非 UI 应用程序获得 Youtube 报告 API 的授权吗?

Posted

技术标签:

【中文标题】我可以从非 UI 应用程序获得 Youtube 报告 API 的授权吗?【英文标题】:Can I get authorization for Youtube's Reporting API from a non UI application? 【发布时间】:2020-09-15 05:49:48 【问题描述】:

我想定期运行一个应用程序(在 AWS Lambda 上),它使用 Youtube 的 reporting API 获取报告并将报告存储在数据库中。我是 Youtube 频道的所有者。

但是,我在设置授权时遇到了问题。文档提到了许多用于 OAuth 的 flows。其中,服务帐户流程似乎很适合这里,因为我没有尝试访问任何其他用户的数据,而且我的应用程序没有 UI。但是,他们提到“YouTube Reporting API 和 YouTube Analytics API 不支持此流程”。对于其他流程,即服务器端和客户端,看起来我需要一个 UI 应用程序。

我在本地运行了他们的Java code samples,它打开了浏览器进行授权。

我想知道是否可以在没有 UI/浏览器支持的情况下完成授权。这似乎是一个应该支持的常见用例。

这个相关的堆栈溢出answer 提到“相反,创建和使用网络客户端谷歌凭据。存储和使用从流程生成的令牌。”。如果我理解正确,我需要从 google dev console 生成客户端 ID 和客户端密码,然后可能使用 oauth playground 生成访问令牌。但是,此令牌将在 24 小时内过期。我可以继续刷新令牌,但这似乎是一种解决方法。

如果它不受支持,我正在考虑的另一种方法是我的应用程序发送一封带有身份验证链接的电子邮件,并在电子邮件收件人打开链接并登录后继续运行。我想知道是否获得该链接谷歌的oauth库是可行的。

注意:我没有使用 Google 的 App Engine 或 Compute Engine。

【问题讨论】:

【参考方案1】:

YouTube api 不支持服务帐户授权。一旦使用离线访问,您将需要使用 Oauth2 授权您的代码。这将为您提供一个刷新令牌,以后可以随时使用它来请求新的访问令牌。

您需要将此刷新令牌与您的代码一起上传到服务器,然后它就可以在不请求用户访问的情况下访问您的数据。

【讨论】:

以上是关于我可以从非 UI 应用程序获得 Youtube 报告 API 的授权吗?的主要内容,如果未能解决你的问题,请参考以下文章

从非 UI 线程调用 Snackbar.make() 是如何工作的?

有没有办法在 Java 文档中指定应该从非 UI 线程调用方法

我应该如何从非 root Debian Linux 守护进程登录?

YouTube API 已观看视频的时间

iOS:在我的应用中将视频分享到 youtube

如何在 Youtube 上获得推荐视频列表