我想永远使用 Google API 刷新令牌

I want to use Google API refresh tokens forever

GoogleAPI有一个通过OAuth认证获取刷新令牌的过程,然后从刷新令牌中获取访问令牌来验证收据。

前几天刷新令牌突然过期,收据验证失败。我们的服务停止处理计费。 下面是失败时的错误。

{
  "error": "invalid_grant",
  "error_description": "Token has been expired or revoked."
}

我以为每次使用刷新令牌都会重置它们的到期日期,那么它们为什么会过期? 我认为以下规则不适用。

You must write your code to anticipate the possibility that a granted refresh token might no longer work. these reasons:

  • The user has revoked your app's access.
  • The refresh token has not been used for six months.
  • The user changed passwords and the refresh token contains Gmail scopes.
  • The user account has exceeded a maximum number of granted (live) refresh tokens.
  • The user belongs to a Google Cloud Platform organization that has session control policies in effect. (https://developers.google.com/identity/protocols/oauth2)

我想永远使用刷新令牌。 提前谢谢你。

刷新令牌在设计上不会过期有几件事可能会导致它们如您所列那样过期。但是还有一个你没有列出。

如果您查看 Experation 的文档,您会发现它也说。

如果您的应用程序处于测试阶段,请将其设置为正式版,您的刷新令牌将停止过期。

因此,只要您的应用处于生产状态,用户就不会撤销您的访问权限,并且他们为该用户提供的未完成刷新令牌少于 50 个,并且您在过去六个月内至少使用过一次。 (gmail 范围内用户不更改密码)。刷新令牌不应过期。

话虽这么说,您的系统应该设计为处理刷新令牌到期并再次请求用户访问。或者如果这是后端系统则通知管理员。