GoogleAPI oauth2 刷新令牌在 1 小时后过期

Posted

技术标签:

【中文标题】GoogleAPI oauth2 刷新令牌在 1 小时后过期【英文标题】:GoogleAPI oauth2 refresh token expires in 1 hour 【发布时间】:2019-03-06 05:19:36 【问题描述】:

我在我的应用程序中使用 Google API,并且 oauth2 刷新令牌在 1 小时后过期。我正在使用此刷新令牌来执行每天运行的任务。我使用 OAuth2 游乐场创建刷新令牌。有没有办法延长刷新令牌的过期时间? (1 个月)

【问题讨论】:

【参考方案1】:

我认为您在这里混淆了您的术语。

根据Oauth2,访问令牌在一小时后过期。访问令牌用于请求访问 api 并返回您需要的数据。无法将访问令牌的生命周期延长到一小时以上。您需要使用刷新令牌来请求新的访问令牌。

刷新令牌的寿命极长,通常不会过期。刷新令牌用于请求新的访问令牌。如果一个在六个月内未使用,大部分刷新令牌不会过期,尽管谷歌会自动将其过期。此外,如果用户删除了您的访问权限,那么刷新令牌也将自动过期。

如果您使用仅用于测试目的的 Outh2 Playground 创建刷新令牌,它也会过期。

如果您使用 oauth2 游乐场创建刷新令牌,那么您不应该这样做,您应该创建自己的应用程序来请求令牌。

【讨论】:

感谢您的解释。是的,我正在使用 Outh2 Playground 来创建刷新令牌。我将不得不编写一个请求令牌的逻辑。【参考方案2】:

如前所述,使用 OAuth 2.0 Playground 创建的刷新令牌会在几个小时后自动撤销,因为 Playground 主要用于测试目的。但是,您可以将 OAuth 操场配置为使用您自己的应用程序凭据(使用右上角的“轮式”图标)。如果您使用自己的应用凭据,则不会撤销刷新令牌。

也就是说,您似乎想要运行访问 Google API 的后台服务。为此,如果您不访问特定用户的数据,您可能需要使用服务帐户。

【讨论】:

您能否解释一下何时使用 OAuth2 服务帐户以及何时使用 OAuth2 桌面应用程序?我想每天上传离线转化数据 (developers.google.com/google-ads/api/docs/samples/…)。在这种情况下,我需要服务帐户吗? @Nicolas - 如果 OAuth2 失败,请使用服务帐户,我一直在使用带有 SP 的 OAuth2,但一个小时后凭据仍然失败。关于我能做些什么来解决这个问题的任何想法? 这可能是您的访问令牌。访问令牌始终仅在最长 1 小时内有效。当/之前发生这种情况时,您应该使用您的服务帐户获取新的访问令牌。

以上是关于GoogleAPI oauth2 刷新令牌在 1 小时后过期的主要内容,如果未能解决你的问题,请参考以下文章

Google API OAuth2 刷新令牌突然被撤销

关于google API中访问令牌和刷新令牌的问题

如何使用 oauth2 并通过 google api 刷新令牌?

Spring Boot OAuth2 - GoogleApi - 无法从令牌获取用户详细信息

来自 GoogleAPI 的带有 JWT 的 Oauth2 令牌响应“invalid_grant”

访问令牌 Google API 的刷新令牌:R 代码