Google 客户端无效的 JWT:令牌必须是短期令牌更新

2022-08-30 16:51:42

我正在使用谷歌的php api客户端。我正在阅读服务帐户的快速入门指南。我完美地遵循了这些步骤(据我所知)。我遇到以下错误:

{
   "error": "invalid_grant",
   "error_description": "Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values and use a clock with skew to account for clock differences between systems."
}

根据我所读到的内容,此错误最常见的问题是系统时间是否错误。我已经三重检查了我的时区和日期和时间是否与原子钟同步。我使用php设置时区函数来设置我的时区以匹配我的计算机,但我继续收到错误。我正在研究消息的另一部分,其中提到了iat和exp设置,但尚未到达任何地方。

有没有人对我如何克服这一点有任何想法?


答案 1

Invalid_grant错误有两个常见原因:

  1. 服务器的时钟与 NTP 不同步

    解决方案:检查服务器时间。如果不正确,请修复它。

  2. 已超出刷新令牌限制。

    解决方案:您无法执行任何操作 - 它们不能在使用更多刷新令牌。

    应用程序可以请求多个刷新令牌。例如,这在用户想要在多台计算机上安装应用程序的情况下很有用。在这种情况下,需要两个刷新令牌,每个安装一个。当刷新令牌的数量超过限制时,较旧的令牌将变为无效。如果应用程序尝试使用无效的刷新令牌,则会返回invalid_grant错误响应。

    每个唯一的 OAuth 2.0 客户端对的限制为 50 个刷新令牌(请注意,此限制可能会更改)。如果应用程序继续为同一客户端/帐户对请求刷新令牌,则在颁发第 26 个令牌后,以前颁发的第 1 个刷新令牌将变为无效。第 27 个请求的刷新令牌将使第 2 个以前颁发的令牌失效,依此类推。

更新

处于测试阶段的应用程序在七天后吊销其刷新令牌。转到项目的 Google 云控制台,然后在 oauth2 下将其设置为生产环境。


答案 2

在2020年为我修复了这个问题。

  • 如果在 Windows 上,请右键单击右下角的日期和时间。
  • 单击“调整日期/时间”。
  • 点击“立即同步”。

推荐