无法弄清楚为什么 Google OAuth 刷新令牌已过期

问题描述

在过去 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 范围,只有以下内容

我不知道如何验证我是否超过了授予的刷新令牌的最大数量。但我相信,自从我与 Google 连接的其他应用程序完美运行以来,我还没有。

我唯一需要检查的项目是对我的 GCP 组织有效的会话控制策略。

但由于这个问题很新,我想知道 Google 是否在 Oauth(身份)API 上部署了一些可能导致刷新令牌过期的新东西。

最近有人遇到过这个问题吗?

更新:有效的会话控制策略不需要重新验证。

解决方法

这是在过去四个月里突然出现的东西,是的,我认为这是新的东西,谷歌还没有关于它的任何官方消息。

仍在测试中且尚未通过 Google 验证过程的应用程序的刷新令牌将在两周内过期。

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...