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

标签 java google-oauth google-api-java-client service-accounts youtube-analytics-api

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

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

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

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

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

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

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

最佳答案

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

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

关于java - 我可以从非 UI 应用程序获得 Youtube 报告 API 的授权吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62055800/

相关文章:

python - 无权请求范围 - Google OAuth2 for devices

java - 带有 Json key 文件的服务帐户

java - 为什么要在 OSGi 中创建和使用服务

java - Codenameone 地理围栏位置是否仅限于 1 个?

java - 使用 JNI 库时,Clojure REPL 上存在链接器错误,但编译后的 jar 上没有链接器错误

java - google-api-client 和 google-api-services 之间的版本兼容性

java - 哪个是 hello world 的最简单的 google API?

java - 未找到媒体类型 = application/json 的 JAX RS MessageBodyWriter

java - Google使用Oauth2. 0 auto 登录多个帐户

google-analytics - 是否可以创建一个应用程序,可以在第一次验证后定期获取 Google Analytics 数据,而无需任何手动干预?