【问题标题】:What causes intermittent Invalid Grant什么原因导致间歇性无效授权
【发布时间】:2012-09-14 23:19:17
【问题描述】:

我收到以下内容

{
  "error" : "invalid_grant"
}
    at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:103)
    at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:303)
    at com.google.api.client.googleapis.auth.oauth2.GoogleRefreshTokenRequest.execute(GoogleRefreshTokenRequest.java:130)

这仅发生在我的生产 Appengine 实例中(即不在开发服务器上),并且仅发生在我用于在开发和生产中进行测试的电子邮件地址中。

我的工作假设是,这与用户在开发服务器上被授予刷新令牌有关,这会以某种方式干扰产品服务器上存储的刷新令牌。

任何人都可以确认这个解释,有没有关于如何处理这个异常的最佳实践?

【问题讨论】:

    标签: oauth-2.0 google-drive-api google-authentication


    【解决方案1】:

    目前只有 Google 授予的最后 25 个刷新令牌有效。 我们基本上保留了一个大小为 25 的生成刷新令牌的队列。

    这意味着在您的测试帐户上,如果您碰巧生成了超过 25 个刷新令牌,旧的令牌将开始被撤销。

    也许这就是这里发生的事情,所以我想指出这一点,可能是您使用测试帐户在您的开发服务器上生成了超过 25 个刷新令牌,并且在 prod 中的令牌被丢弃(因为有25 个较新的)。

    这是关于我们的身份验证服务器没有记录的内容,因此请注意它可能随时更改。

    一般而言,当发生此异常时,您需要让用户通过新的 OAuth 2.0 流程才能获得新的刷新令牌。

    【讨论】:

    • 嗨 Nivco,这几乎可以肯定正在发生的事情。非常感谢
    • @Nivco:您能否确认该限制是针对每个 Analytics 帐户还是每个 Google 帐户? developers.google.com/analytics/devguides/reporting/core/v2/… 的故障排除指南清楚地表明它是针对每个 Analytics 帐户的,但是我的客户已经使用同一个 Google 帐户授权了许多不同的 Analytics 帐户,我现在在尝试使用其中一些帐户获取新的访问令牌时遇到 invalid_grant 失败刷新令牌,即使客户只为每个 Google Analytics(分析)帐户生成了一个刷新令牌。
    • 25 个刷新令牌限制是每个 Google 帐户和每个应用程序(基本上,一个应用程序只能为给定用户拥有 25 个工作刷新令牌)
    猜你喜欢
    • 1970-01-01
    • 2019-01-05
    • 2017-05-03
    • 2021-04-06
    • 2012-04-02
    • 2014-05-13
    • 2012-07-05
    • 1970-01-01
    • 2016-12-09
    相关资源
    最近更新 更多