没有用户手册操作的 OAuth2 流程

OAuth2 flows without User Manual actions

我有一个 Java 应用程序从 Google Analytics 请求数据,我在处理身份验证时遇到了麻烦。

我看到 Google Analytics 处理 OAuth2 流 refresh_token & authorization_code

如果是 refresh_token,我需要一个 refresh_token,可以通过在浏览器中手动验证用户来检索。

authorization_code 的情况下,我需要一个 code 可以通过浏览器中的用户手动身份验证再次检索。

有没有一种方法可以在无需用户手动操作的情况下使用这些 OAuth 流程之一?

我测试了 client_credentials 流程,但 Google Analytics

没有处理它

简而言之 - 没有。授权代码流依赖于浏览器作为确保代码被重定向回正确方的安全措施。由于用户身份验证是该流程的一部分,因此它需要用户采取适当的操作来进行身份验证。你可以尝试做什么:

  • 尝试使用 curl 模拟浏览器行为。这可能有效,但当身份验证流程从 Google 发生任何变化时它会中断,因此绝对不建议将其用于生产用途。

  • 您可以通过浏览器手动创建访问和刷新令牌,然后将它们保存在您的应用中。然后您的应用程序可以使用刷新令牌来获取新的访问令牌。这当然会要求您在刷新令牌过期后获得一对新的并更新您的代码。

  • 我不确定 Google 是否支持设备流,但我认为他们支持。也许这会适合你。 Device Flow 仍然需要用户手动操作,但无需从您的应用程序打开浏览器即可执行此操作。