2012-03-28 57 views
10

看完各種各樣的Stackoverflow帖子和各種文檔,包括一些http://code.google.com/p/google-api-java-client/網站,我感到非常困惑。所以有人可以向我解釋達到以下最佳方式:Android:Google SSO - OAuth或AccountManager?或兩者?

  1. 讓用戶批准我的應用程序。我並不在乎是否通過訪問其在帳戶/設置中註冊的Google帳戶並批准該應用(首選方式)或通過調用Google OAuth身份驗證頁面來完成此操作頁面
  2. 獲取可用於與Google通信的身份驗證令牌讀者

對我來說還有一點困惑 - 我能夠使用AccountManager批准我的應用程序,並從中獲取auth令牌,但它不適用於Google Reader。那麼如何平衡來自AccountManager和OAuth的賬戶信息?在AccountManager設置中獲得用戶批准後,是否還需要使用OAuth進行任何操作?

代碼示例將是不錯,但我期待更多一些明確的解釋所有這些作品是如何相互關聯的

+0

你是什麼意思「批准」你的應用程序?您是否試圖在您的應用中使用他們的身份(OpenID)或讓您的應用使用Google訪問您的用戶數據(OAuth)? – Anirudh 2012-04-06 19:08:13

+0

公平的問題。在這種特殊情況下,我希望能夠使用手機註冊的Google帳戶將用戶登錄到他們的Google閱讀器帳戶。或者(如果這是不可能的),我不介意(但不願意)最初將用戶重定向到Google OAuth應用批准頁面。 – Bostone 2012-04-07 03:45:43

+0

從Google閱讀器帳戶中實際檢索信息是由遠程服務器完成的,該應用程序只需要傳遞相應的認證令牌 – Bostone 2012-04-07 03:52:36

回答

6

賬戶管理器讓你獲得不同服務的認證令牌。下面有不同的具體實現:ClientLogin,OAuth等。爲了使它適用於Google Reader,您需要傳遞適當的令牌類型。對於ClientLogin,這些字符串很短,如「ah」(App Engine)和「reader」(Google Reader)。對於OAuth,它們是範圍,由每個服務定義。那麼,您通過authTokenType參數傳遞了什麼?

獲取令牌是異步的,因爲它可能涉及網絡訪問。如果存在緩存的令牌,則會立即返回(如果有效)。流程並不那麼複雜,請參閱上面的鏈接獲取漂亮的圖片。一旦獲得令牌,就將其放入適當的頭文件中,並根據規範使用API​​。

+0

正如我所說,我寧願用他們現有的Google帳戶簽署用戶。這些「短串」中是否有任何文檔概述了支持的內容? – Bostone 2012-04-10 18:17:44

+0

正確的術語實際上是「服務名稱」。這不是一個完整的列表,但這裏大部分是:http://code.google.com/apis/gdata/faq.html#clientlogin。有關對Google服務進行身份驗證的一般信息,您可以從這裏開始:https://developers.google.com/accounts/。 Android的AccountManger只是這些的前端。 – 2012-04-11 05:14:12

+0

謝謝尼古拉。我接受你的回答,因爲我很確定我現在可以找出其餘的問題 – Bostone 2012-04-11 19:38:39

4

下面是對的AccountManager一個Android培訓課程,可以幫助:

http://developer.android.com/training/id-auth/authenticate.html

此外,使用Google閱讀器的AccountManager是目前唯一的首選方式。據我所知(我也不確定Reader是否使用OAuth2),將用戶引導至帶有WebView的登錄頁面並不是非常安全,並且Google API不支持使用瀏覽器。

+0

有用的鏈接,謝謝 – Bostone 2012-04-12 00:48:33