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

Can I get authorization for Youtube's Reporting API from a non UI application?

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

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

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

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

此相关堆栈溢出 answer mentions "Instead, create and use web client google credentials. Store and use the token generated from the flow.". If I understand this correctly, I would need to generate Client ID and Client secret from google dev console and then maybe use the oauth playground 生成访问令牌。但是,此令牌将在 24 小时内过期。我可以继续刷新令牌,但这似乎是一种解决方法。

万一它不受支持,我正在考虑的另一种方法是我的应用程序发送一封带有授权 link 的电子邮件,并在电子邮件收件人打开 [=34] 后继续 运行ning =] 并登录。我想知道 link 使用 google 的 oauth 库是否可行。

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

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

您需要将此刷新令牌连同您的代码上传到服务器,然后它就可以访问您的数据而无需请求用户访问。