2015-12-15 102 views

回答

2

的OAuth2授權使用 訪問令牌來訪問,而不是使用用戶名和密碼的API。在 正常的OAuth2方法中,我們最初將使用範圍,重定向URL和客戶端ID從授權機構請求授權代碼 ,然後 與客戶端ID和客戶端密鑰交換代碼以獲得訪問令牌 和刷新令牌。但使用Android AccountManager,我們可以輕鬆獲得Google API的 訪問令牌。

GoogleAuthUtil.getToken()有三個參數:上下文,電子郵件地址,以及另一個名爲範圍字符串參數。每個願意談論OAuth 2.0的信息資源都需要發佈它使用的範圍(或範圍)。例如,要訪問Google+ API,範圍爲oauth2:https://www.googleapis.com/auth/plus.me.您可以在一次調用中提供多個以空格分隔的範圍,並獲取提供對其全部訪問權限的令牌。這樣的代碼可能是典型的:

private final static String G_PLUS_SCOPE = 
     "oauth2:https://www.googleapis.com/auth/plus.me"; 
    private final static String USERINFO_SCOPE = 
     "https://www.googleapis.com/auth/userinfo.profile"; 
    private final static String SCOPES = G_PLUS_SCOPE + " " + USERINFO_SCOPE; 

getToken()將是同步的,但三件事情保持它沒有那麼簡單:

第一次應用程序請求令牌訪問某些資源時,系統將需要與用戶進行交互,以確保他們沒問題。

無論何時您詢問令牌,系統都可能與身份後端服務進行網絡對話。

處理這些請求的基礎架構可能會被大量加載,並且無法立即讓您獲得令牌。它不會讓你等待,或者只是失敗,它可能會要求你離開並稍後再回來。

禮貌去OAuth Identity Tools

https://developers.google.com/android/reference/com/google/android/gms/auth/GoogleAuthUtil.html#getToken(android.content.Context)