2013-03-15 106 views
3

我想開發一個Android應用程序,允許用戶使用他們的Google帳戶(我認爲它始終是電子郵件地址)登錄,而不是強制用戶創建一個新帳戶。我有3點這方面的問題:如何在Android應用程序中使用Google帳戶

  • 當用戶首次啓動應用程序,我將不得不使用AccountManager,對不對?如果用戶只有一個com.google帳戶,我會使用該帳戶,否則,我會問他想使用哪一個帳戶。我的問題是,我可以確定AccountManager中的每個com.google帳戶都已正確驗證,並且應用程序可以確定用戶是他所說的他是誰,以便我不必要求他選擇帳戶每次應用程序啓動?

  • 該應用程序將有一個服務器,將存儲在數據庫中的用戶已解鎖的受限內容,這就是爲什麼它需要Google帳戶,以匹配用戶的外鍵與內容的外鍵知道那個用戶已經解鎖了。你如何建議我將Google帳戶作爲用戶表的主鍵保存在數據庫中?我可以存儲Google帳戶的電子郵件,但是沒有任何隱私問題?我還能使用什麼?我猜想Google帳戶沒有類似Facebook ID的整數值。

  • 我是否需要使用OpenID或oAuth 2.0進行上述操作?我這樣問,因爲當應用程序沒有互聯網連接時,我希望用戶仍然能夠訪問他解鎖並先前下載到手機中的受限制內容。如果我使用需要互聯網連接的OpenID?所以用戶不應該能夠進入應用程序,這不是我想要的。

感謝

回答

1

使用的客戶經理,以檢查其賬戶都可以在手機上,並要求佔他想用聽起來像一個好主意用戶。我認爲使用OAuth 2.0並在客戶端應用程序中獲取userinfo的OAuth 2.0訪問令牌是一個不錯的主意(https://www.googleapis.com/auth/userinfo.profile可能是您要使用的範圍),並在客戶端與服務器通信時將其發送到您的服務器。然後使用userinfo Google API您的服務器可以使用訪問令牌來確保用戶是他自稱的用戶。通過這個api,你可以獲得你可以使用的用戶標識,而不是用戶的電子郵件。

獲取身份驗證令牌將需要上網,但因爲當你用自己的服務器進行通信,它只是需要你可以抓住當時的令牌。

我不是100%確定AccountManager提供的帳戶是否可信,但它會爲您提供電話上提供的Google帳戶,並且我不知道是否有任何方法將帳戶添加到手機無法訪問帳戶。如果這是可能的話,這也是一個非常大的安全問題,所以我認爲你可以相信AccountManager給出的帳戶是真實的。

當您在客戶端上獲得OAuth 2.0令牌時,如果可能,我建議您使用Google Play的GoogleAuthUtil代替帳戶管理器。對於這方面的更多詳情,請參閱:In a nutshell what's the difference from using OAuth2 request getAuthToken and getToken

+0

從用戶配置文件範圍id字段是谷歌帳戶相當於Facebook的ID,即,一個數字,永不改變和唯一標識一個谷歌帳戶的用戶?如果是這樣,你說的是有道理的。我會嘗試一下,如果它按我想要的那樣工作,我會將答案設置爲接受:) – xlar8or 2013-03-15 15:26:37

+0

是的,它是一個永不改變的數字,並且唯一標識Google帳戶。 – nibarius 2013-03-15 18:42:11

+0

我一直在做一些測試,它似乎ID號太大,無法存儲在一個64位整數,所以我必須保存在一個字符串有點吹,因爲在數據庫端我不得不使用主鍵上的varchar。我可以使用浮動,但我真的不知道如何執行作爲MySQL的主鍵。 – xlar8or 2013-03-16 20:21:17

相關問題