令牌必须是短期令牌并且在合理的时间范围内

Token must be a short-lived token and in a reasonable timeframe

我遇到了与 this 相同的错误。 在我的例子中,当应用程序试图通过 Google Cloud Client API.

上传文件时,就会发生这种情况
POST https://www.googleapis.com/oauth2/v4/token
400 Bad Request
Invalid JWT: Token must be a short-lived token and in a reasonable timeframe

我加载令牌的方式是读取服务帐户 json 文件,并将其附加到 PHP 中的 CURLOPT_HTTPHEADER。过去1个月确实没问题,估计是Google改变了授权方式

有没有人遇到并解决了这个问题?

我几乎在同一时间偶然发现了同样的问题,所以我预计会出现 Google 的一般错误,但这是我计算机上发生的事情:

raise HttpAccessTokenRefreshError(error_msg, status=resp.status)
oauth2client.client.HttpAccessTokenRefreshError: invalid_grant: Invalid JWT: Token must be a short-lived token and in a reasonable timeframe

在我的案例中是由于计算机时钟同步不良造成的,其中执行代码有 5 分钟的滞后(由于内部时钟的电池故障)。当我手动将计算机的内部时间更改为正确的时间时,它又开始工作了。

此解决方案已被提及 here,但未包含完整的错误消息

我遇到了同样的问题,我发现我的服务器延迟了 8 分钟。我配置了NTP服务器,神奇地解决了

遇到同样的问题....手动将我的计算机时钟重置为当前时间....问题已解决。

我被这个难住了好几个小时。我什至发布了 。原来我忽略了一些本该显而易见的事情。我的开发服务器是一个 Linux 虚拟机。我的 VM 上的时钟比我的本地系统时钟晚 8 天。因此,虽然我的本地时钟是正确的,但我忽略了我的虚拟机延迟了几天的事实。希望这可以为心不在焉的人节省一些时间。

我遇到了类似的问题,我的工作一直失败并出现以下错误:

  File "/usr/local/lib/python2.7/site-packages/google/oauth2/_client.py", line 59, in _handle_error_response
    error_details, response_body)
google.auth.exceptions.RefreshError: ('invalid_grant: 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.', u'{\n  "error" : "invalid_grant",\n  "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."\n}')
2018-05-1713:01:01:  API CALL iOS intra day: module failed.

真正的根本原因是系统时间与服务器不同步。我刷新了同步时间的ntp服务器,问题解决了。

我在尝试访问 google 云大查询 API 时遇到了类似的问题。调整我的系统时钟并允许 windows 10 自动设置时间和时区解决了问题。

这听起来很明显,但要确保到期 exp 在发布时间 iat 之后。

对于那些在容器化应用程序中遇到错误并在此处结束的人,

我在容器化应用程序中使用我的令牌时遇到了同样的问题。重新启动 Docker 桌面 (Windows) 对我有用。

在第一次遇到这个问题之前,我已经进行了数周的设置。

对于那些使用 vagrant 的人,ssh 进入你的盒子然后 运行 sudo service ntp stop && sudo ntpd -gq && sudo service ntp

我在为 Linux (WSL) 使用 Windows 子系统时遇到了这个问题。我所有的 WSL 图像都是 运行 过去设置的日期,https://github.com/microsoft/WSL/issues/4245 表明这是 Windows 从睡眠中恢复时的问题。

我通过重启 WSL 修复了,wsl --shutdown