1

我得到以下

{
  "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 实例中(即不在开发服务器上),并且仅发生在我用于测试开发和生产的电子邮件地址中。

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

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

4

1 回答 1

7

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

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

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

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

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

于 2012-09-24T07:16:05.767 回答