簡體   English   中英

如何在GoogleCredential中刷新令牌

[英]How to refresh Token in GoogleCredential

我已經實現了從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"
}

我應該怎么做才能刷新令牌? 我在使用OAuth 2.0中找到了一些有關刷新令牌的文檔。 但是我不知道如何在Android代碼中實現它? 是否有任何示例代碼?

通常,(根據我的經驗,因為我還沒有找到任何文檔,所以)“無效授權”表示您存儲的刷新令牌存在一些問題。 這包括(我認為):-

  1. 用戶已將其撤消
  2. 您的測試導致生成了多個刷新令牌。 可能只有25個
  3. 與存儲的令牌關聯的范圍已更改

要恢復這種情況,請刪除存儲的刷新令牌,然后重新開始該過程。 好消息是,除了用戶吊銷方案(1)之外,這是一個測試環境問題,並不一定意味着您有錯誤。

看看https://developers.google.com/+/mobile/android/signin(這是Android的OAUTH),您可以檢查出什么地方不對,也可以在Project中使用示例代碼。 為了給您更多細節,您必須發布整個項目(例如,將其鏈接到GitHub)或發布感興趣的Class ;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM