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

问题描述 投票:47回答:7

我和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。它确实在过去一个月内正常运行,因此我猜测Google改变了授权方式。

谁有人面对并解决了这个问题?

php google-api google-api-php-client
7个回答
97
投票

我几乎在同一时间偶然发现了同样的问题,所以我期待谷歌的一般错误,但这是我的电脑上发生的事情:

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,但没有提供完整的错误消息


12
投票

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


5
投票

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


2
投票

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


2
投票

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


0
投票

我有类似的问题,我的工作是继续失败,出现以下错误:

  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服务器,它同步了时间,问题得到了解决。

希望它可以帮助某人。


0
投票

我得到了这个错误,因为我改变了我的Mac时钟,但没有改变时区。恢复时钟时间后修复了它,并将时区更改为我当前所在的时区。

© www.soinside.com 2019 - 2024. All rights reserved.