2012-09-27 50 views
0

我已經從SharedPreferences中實現了從保存的令牌中檢索功能的功能。如何刷新GoogleCredential中的令牌

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代碼中實現它?有沒有示例代碼這樣做?

回答

1

通常(根據我的經驗,因爲我沒有找到任何文檔)'無效授權'意味着存儲的刷新令牌存在一些問題。這包括(我認爲): -

  1. 用戶已撤銷將產生它
  2. 您的測試已經引起了多個刷新令牌。只有25可能是現存
  3. 與存儲的令牌相關聯的範圍已變更

要恢復的情況下,刪除存儲刷新令牌,然後再次啓動過程。好消息是,除了用戶撤銷方案(1)之外,這是一個測試環境問題,並不一定意味着您有錯誤。

+0

感謝Pinoyyid ...我發現我的問題。我存儲了錯誤的刷新密鑰。我解決了這個問題。 – quantm

+0

您好,我需要在我的網站上爲所有用戶分享我的谷歌驅動器文件。可以請你幫助我..我無法正確使用訪問令牌和刷新令牌。 –

+0

如果它是「所有用戶」,而你不不知道如何正確使用訪問令牌和刷新令牌「,那麼無論您需要花一天時間閱讀可用的文檔,或考慮將驅動器文件共享爲網站https://googledrive.com/host/0B716ywBKT84AMXBENXlnYmJISlE/GoogleDriveHosting。 html 您還應該瞭解在其他問題上標記問題在Stackoverflow上是不好的形式。 – pinoyyid