问题描述
在过去 3 周内,我们在使用 Google Oauth API 刷新访问令牌时出现大量失败。我无法弄清楚为什么会发生这种情况,因为直到今天它才发生在我身上。
当我尝试刷新令牌时,我从 Google OAuth API 收到以下 HTTP 响应:
{
"error": "invalid_grant","error_description": "Token has been expired or revoked."
}
在文档中,有一节解释了刷新令牌过期:https://developers.google.com/identity/protocols/oauth2#expiration
- 用户撤销了您的应用的访问权限。
- 刷新令牌已六个月未使用。
- 用户更改了密码,刷新令牌包含 Gmail 范围。
- 用户帐户已超过授予(实时)刷新令牌的最大数量。
- 该用户属于已生效会话控制政策的 Google Cloud Platform 组织。
我去了https://myaccount.google.com/permissions页面。由于我的应用程序仍在列表中,它确认我没有手动撤销我的应用程序的访问权限。
访问是在 2021 年 6 月 4 日,所以是 3 天前(截至撰写本文),因此不是因为刷新令牌已六个月未使用。
我没有更改我的密码,并且该应用程序不使用 Gmail 范围,只有以下内容:
- https://www.googleapis.com/auth/userinfo.email
- https://www.googleapis.com/auth/userinfo.profile
- openid
- https://www.googleapis.com/auth/contacts.readonly
- https://www.googleapis.com/auth/calendar.readonly
- https://www.googleapis.com/auth/calendar.events
我不知道如何验证我是否超过了授予的刷新令牌的最大数量。但我相信,自从我与 Google 连接的其他应用程序完美运行以来,我还没有。
我唯一需要检查的项目是对我的 GCP 组织有效的会话控制策略。
但由于这个问题很新,我想知道 Google 是否在 Oauth(身份)API 上部署了一些可能导致刷新令牌过期的新东西。
最近有人遇到过这个问题吗?