2014-03-12 173 views
5

的Android登錄我想把你登錄到谷歌使用這些指南的工作: http://www.androidhive.info/2014/02/android-login-with-google-plus-account-1/ https://developers.google.com/+/mobile/android/getting-started與谷歌離線訪問

登錄作品,我能正確登錄。現在我需要的下一步是將訪問和刷新令牌發送到我的服務器,以便服務器可以訪問用戶的谷歌帳戶詳細信息(圖片/名稱等),並將其作爲新用戶保存在數據庫中。

我想在這裏使用的代碼獲得訪問令牌: https://github.com/googleplus/gplus-photohunt-client-android/blob/master/src/com/google/plus/samples/photohunt/auth/AuthUtil.java

當我插上的訪問令牌這裏: https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

我看到ACCESS_TYPE爲「在線」。我相信爲了獲得更新令牌並使其發揮作用,我需要向用戶請求離線訪問。我不知道如何從上面的指南中給出的代碼做到這一點。

我猜想它一定是在這裏:

// Initializing google plus api client 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this).addApi(Plus.API, null) 
       .addScope(Plus.SCOPE_PLUS_LOGIN).build(); 

但是沒有辦法,我設置訪問類型在這裏下線。 在這一點上,這整個過程聽起來相當複雜,我希望以前做過這個的人有一個指南/教程寫在某個地方,使得它更容易理解如何使用戶登錄到您的Android設備並將該用戶保存在您的數據庫在您的服務器上,因此它們都是同步的。任何幫助和方向將不勝感激。

編輯1: 在讀谷歌文檔,更是儘可能我上述獲得流通工作: https://developers.google.com/accounts/docs/CrossClientAuth 如何所有的Android應用解決在多個平臺上的用戶註冊?像android和網站一樣?如果我嘗試的方法是唯一的方法,那麼我會期待更多的資源。或者如果有另一種替代解決方案,我很想知道。 謝謝。

回答

1

事實上,正確的做法是使用CrossClientAuth方向。

用戶第一次打開您的應用程序時,您可以請求與您的網站client_id相同的id_token。如果您已經知道用戶的電子郵件地址,則不需要額外的用戶同意,因爲id_token只是一個識別標記。然後,您可以驗證您的家庭服務器中是否存在該帳戶,而無需額外的人機交互。如果該帳戶不存在,您可以獲取授權碼並使用CrossClientAuth技術將其發送到您的主服務器。在您的家庭服務器獲得授權後,您的Android應用程序應能夠通過簡單地請求這些令牌來獲得access_tokens w/o進一步的批准。

+0

應該在Google開發者控制檯中創建已安裝的應用程序和Web應用程序? –

+0

是的,在同一個項目中。分別使用「Wep應用程序」和「Android」類型。 – breno