2013-08-18 45 views
4

我想使用谷歌加登錄來驗證我的用戶在iOS應用程序。我遵循https://developers.google.com/+/features/sign-in上所述的iOS指南。登錄客戶端與Google +平臺完美結合。我還沒有理解如何在服務器端上驗證用戶身份。驗證客戶端發送的Google Plus Oauth 2訪問令牌安全地驗證服務器上的用戶是否安全?

我已經看到客戶端上的訪問令牌可以在一定程度上在https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=XYZ123上進行驗證。通過驗證用戶通過HTTPS發送的訪問令牌來確認客戶端是否安全?

在客戶端上使用Google+登錄按鈕時有更好的解決方案嗎?據我瞭解,谷歌建議使用Google+登錄按鈕:

的Google+登錄按鈕是一個簡單的方法爲用戶註冊並登錄到您的應用程序。這可以讓您知道他們在Google+上的身份,併爲您的應用打造更加個性化的體驗,而無需創建另一個用戶名和密碼。

+0

好問題,我也對此感興趣,因爲我將在不久的將來在我的iOS應用中加入Google Plus登錄。 – bloodphp

回答

3

簡而言之:是的。在iOS上,這是現在最好的方法。重要的是,您的驗證通常會檢查您想要的內容:

  • 客戶端ID是您項目中的客戶端ID。
  • 你只使用用戶ID從訪問令牌
  • 令牌沒有過期

到期等基本驗證,系統會自動處理,當你叫tokeninfo。只要確保您檢查客戶端ID,並使用tokeninfo響應中的用戶標識查找本地用戶。

{ 
"issued_to": "1234.apps.googleusercontent.com", 
"audience": "1234.apps.googleusercontent.com", 
"user_id": "104824858261236811362", 
"scope": "https://www.googleapis.com/auth/plus.login", 
"expires_in": 3584, 
"access_type": "online" 
} 

這是響應的一個例子。客戶端ID是這裏的「觀衆」字段(實際上也是發佈到的),而user_id是Google用戶ID - 這就是您應該在數據庫中查找以查找匹配的應用程序用戶的內容。

在Android和Web上有兩個其他選項:檢索一個ID令牌(基本上是一個加密簽名的令牌,它直接包含與使用訪問令牌調用tokeninfo返回的內容類似的信息),以及檢索代碼可用於在服務器端交換訪問令牌和ID令牌)。這兩個目前在iOS上不可用,所以通過HTTPS傳遞訪問令牌是當前最好的選擇。

相關問題