kan*_*ane 4 google-api google-oauth google-developers-console
有一个过程通过 Google API 的 OAuth 身份验证获取刷新令牌,然后从刷新令牌获取访问令牌以验证收据。
有一天,刷新令牌突然过期,收据验证失败。我们的服务已停止处理计费。下面是失败时的错误。
{
"error": "invalid_grant",
"error_description": "Token has been expired or revoked."
}
Run Code Online (Sandbox Code Playgroud)
我认为刷新令牌每次使用时都会重置其过期日期,那么为什么它们会过期呢?我认为以下规则不适用。
您必须编写代码来预测授予的刷新令牌可能不再起作用的可能性。这些原因:
- 用户已撤销您的应用的访问权限。
- 刷新令牌已六个月未使用。
- 用户更改了密码,并且刷新令牌包含 Gmail 范围。
- 用户帐户已超出授予的(实时)刷新令牌的最大数量。
- 用户所属的 Google Cloud Platform 组织具有有效的会话控制策略。(https://developers.google.com/identity/protocols/oauth2)
我想永远使用刷新令牌。先感谢您。
DaI*_*mTo 13
刷新令牌在设计上不会过期,有一些事情可能会导致它们过期,正如您所列出的那样。然而,还有一个你没有列出来。
如果您检查Experation的文档,您会发现它也说。
如果您的应用程序处于测试阶段,请将其设置为生产环境,您的刷新令牌将停止过期。
因此,只要您的应用程序处于生产状态,用户就不会撤销您的访问权限,并且他们为该用户拥有的未完成刷新令牌少于 50 个,并且您在过去六个月中至少使用过一次。(gmail 范围内的用户不会更改其密码)。刷新令牌不应过期。
话虽这么说,您的系统应该设计为处理刷新令牌过期并再次请求用户访问。或者通知管理员如果这是后端系统。
| 归档时间: |
|
| 查看次数: |
7544 次 |
| 最近记录: |