如何在GoogleCredential中刷新令牌

时间:2012-09-27 04:46:26

标签: android google-api google-drive-api

我已在 SharedPreferences 中的已保存令牌中实现功能检索凭据。

mCredential = new GoogleCredential.Builder()
                   .setClientSecrets(CLIENT_ID, CLIENT_SECRET)
                   .setJsonFactory(mJsonFactory)
                   .setTransport(mHttpTransport).build();

mCredential.setRefreshToken(accessRefreshTokenSave);
mCredential.setAccessToken(accessTokenSave);

Long expires = mCredential.getExpiresInSeconds();
boolean result = mCredential.refreshToken();

令牌过期时。我们应该调用 mCredential.refreshToken()来刷新令牌,是不是?

当我调用refreshToken时,我得到了例外。

com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request
{
  "error" : "invalid_grant"
}

刷新令牌需要做什么?我在Using OAuth 2.0中找到了一些关于刷新令牌的文档。但我不知道如何在Android代码中实现它?有没有示例代码吗?

2 个答案:

答案 0 :(得分:1)

通常(根据我的经验,因为我没有找到任何文档)'无效授权'意味着您存储的刷新令牌存在一些问题。这包括(我认为): -

  1. 用户已将其撤消
  2. 您的测试导致生成多个刷新令牌。现存只有25个
  3. 与存储的令牌关联的范围已更改
  4. 要恢复该情况,请删除存储的刷新令牌并再次启动该过程。好消息是,除了用户撤销方案(1)之外,这是一个测试环境问题,并不一定意味着你有错误。

答案 1 :(得分:0)

查看https://developers.google.com/+/mobile/android/sign-in这是Android的OAUTH,您可以查看错误,或者使用项目中的示例代码。为了给你更多细节,你必须发布整个项目(例如将它链接到GitHub)或发布感兴趣的类; - )