2015-01-01 40 views
0

你好,我是OAuth的過程來驗證回來的Android端,以便爲這個我創造了在谷歌API控制檯項目,有我創建客戶端ID爲Web和Android應用程序。我們是否需要生成調用Web服務之前令牌ID每次

這是我做的,因爲使系統更安全,這樣沒人能黑客無論如何打我的web服務,如果有人這樣做,然後驗證服務器發送響應(無效標誌)。

對於Android的這個過程中,我要生成令牌。 Google Play服務庫有一個方法。

public static String getToken (Context context, String accountName, String scope) 

http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html#getToken(android.content.Context,%20java.lang.String,%20java.lang.String)

我有我打電話給任何Web服務之前在我的應用程序,因爲據我所知這個令牌小時內到期每次生成此令牌ID。這有點增加了延遲,因爲首先它從Google獲得令牌ID,然後使用令牌ID調用我的Web服務。

看起來不是一個最好的辦法。你有什麼建議呢?

在此先感謝。

回答

1

我認爲最好的辦法就是在客戶端代碼首先檢查令牌已過期。如果不是,則不要生成新的令牌,只需使用已有的令牌直接調用Web服務即可。如果它過期了,那麼先獲得一個新的令牌,然後調用Web服務。這樣,只有當您的令牌實際過期時,即您實際需要續訂令牌時,您纔會進行2次遠程調用。

要實現此策略,您需要記住的所有內容(在您的代碼中)爲:
1)生成令牌的日期和時間; 2)其持續時間。

+0

如何知道該令牌何時到期?我如何獲得時間後過期? –

+0

@Williams我認爲這應該在令牌生成API的文檔中。或者...在令牌生成API中應該有另一種方法,爲您提供令牌的持續時間(有效時間)。至少,這就是通常設計這種與令牌相關的API的方式。 –

+0

不確定這是否相同,但請檢查:https://developers.google.com/accounts/docs/OAuth2#expiration。 –

相關問題