2013-07-11 123 views
4

我正在開發一個Android應用程序,我希望用戶使用Google+登錄功能登錄到我的應用程序。安全Google Plus通過Android應用程序登錄到Web應用程序

目前,我在PHP登錄腳本中傳遞從Google+獲取的用戶名。該腳本使用用戶的ID加載新會話。

目前,該網站高度不安全:任何知道其他用戶的用戶名的人都可能以他們身份登錄。

什麼是安全的方法來做到這一點?

如何授權用戶對我的服務器?

它看起來像我和Google+純屬社交API ...

回答

18

Google+登錄使用OAuth 2.0 - 這意味着用戶不直接與您的服務器進行身份驗證。相反,他們通過Google進行身份驗證並獲取由Google簽名的令牌。您的應用會從Android上的Google Play服務獲取該令牌,並將其傳遞到您的服務器,以證明用戶已通過Google驗證。然後,您將用戶的Google+ ID與您自己的服務器上的新的或現有的用戶ID相關聯。因此,無論用戶何時可以證明他們通過Google針對特定的Google+用戶標識進行身份驗證,您都可以在自己的服務器上對其進行身份驗證。

要實現,你有幾種選擇取決於你如何構建您的系統:

  1. 當你只是想你的用戶進行身份驗證,以自己的服務器:在Android設備上的用戶經常已經通過Google身份驗證,因爲他們在帳戶經理中擁有Google帳戶。您的應用程序可以利用此優勢,並在帳戶管理器中爲用戶獲取令牌,而無需輸入任何密碼。在用戶點擊應用中的「使用Google登錄」後,您可以使用GoogleAuthUtils.getToken()爲其獲取ID令牌,並將其傳遞到您的服務器。您的服務器在驗證Google簽名後,可以安全地將用戶會話與相應的用戶帳戶和權限相關聯(即將會話視爲已驗證)。獲取令牌並驗證它的過程由Tim Bray hereIan Barber here討論。
  2. 如果您想要將用戶身份驗證到自己的服務器並通過服務器進行Google+ API調用:那麼您應該查看developers.google.com上的server side flow文檔。這採用與選項1相同的方法,但此外,當用戶第一次登錄Android應用程序請求授權代碼而不是ID令牌時。這可以由服務器交換訪問令牌和刷新令牌 - 服務器可以使用它代替用戶進行API調用,例如,使用PHP client library
  3. 如果您想要將用戶認證到自己的服務器,還需要通過Android設備進行Google API調用:那麼您應該提供Google Play服務提供的use the PlusClient以進行Google API調用,除了您執行的步驟使用您自己的服務器驗證用戶身份。

您可能想要在您的客戶端或服務器上創建Google API調用,以便您可以使用用戶的Google+個人資料中的數據預填充您的註冊表單。

0

谷歌加使用OAuth 2.0 https://developers.google.com/+/api/oauth

它的身份驗證令牌。您可以使用身份驗證令牌從Android或服務器訪問Google Plus。 在服務器上,您可以通過使用該令牌訪問Google來驗證令牌。