2012-09-27 184 views
1

我已經從saved-access-token和saved-refresh-token初始化GoogleCredential變量。但我不知道檢查它是否過期?如何檢查GoogleCredential是否已過期

我知道GoogleCredential有一個函數getExpiresInSeconds。但是,如果我從saved-access-token和saved-refresh-token初始化GoogleCredential,函數getExpiresInSeconds將返回null。

這種情況getExpiresInSeconds不會空

mResponse = mFlow.newTokenRequest(code).setRedirectUri(REDIRECT_URI).execute(); 
mCredential = new GoogleCredential.Builder().setClientSecrets(CLIENT_ID, CLIENT_SECRET).setJsonFactory(mJsonFactory).setTransport(mHttpTransport).build(); 
mCredential.setFromTokenResponse(mResponse); 
mCredential.getExpiresInSeconds() // will return expired value in second 

但在這種情況下

String accessTokenSave = mPrefs.getString(GOOGLE_DRIVE_TOKEN, "NO KEY"); 
String accessRefreshTokenSave = mPrefs.getString(GOOGLE_DRIVE_REFRESH_TOKEN, "NO KEY"); 

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

mCredential.setAccessToken(accessTokenSave); 
mCredential.setRefreshToken(accessRefreshTokenSave); 
mCredential.getExpiresInSeconds() // will return null value 

所以,我怎麼能檢查mCredential的情況下,從accessTokenSave和accessRefreshTokenSave

+0

我使用這個庫的真正樣本。 http://code.google.com/p/android-query/ –

回答

1

加載它訪問令牌過期後在一小時內刷新令牌將有效,直到用戶撤銷。但是,您絕不應該依賴這些時間,而應該準備在證書不再有效時捕獲異常,並做出相應的反應。

檢查文檔的完整流程的描述,示例代碼執行它一起:https://developers.google.com/drive/credentials

+0

這不是一個可以接受的迴應Claudio,特別是如果你是Google高級開發人員程序工程師-.-「我也有同樣的問題,即使我複製了我知道,stackoverflow允許打開一個臨時聊天(但我不知道如何)。如果你沒有任何問題要與之聯繫,請與我聯繫(並且我承諾我將這個解決方案發布在幾乎未來),或者請重寫@quantm和所有感興趣的用戶的回覆。非常感謝你;-) – Aerox