我正在編寫一個與遠程服務器交談的Android應用程序,並且我想允許應用程序用戶使用駐留在其手機上的Google憑據登錄到服務器,即不需要用戶可以在我的應用中的任何位置輸入他們的Google密碼。例如,如果用戶的(Android)手機已配置爲「[email protected]」,然後他們安裝並運行我的應用程序,則我的應用程序會向他們顯示一個對話框,指出「您是否希望以某種方式登錄@ gmail.com?「,當點擊確定按鈕時,他們會在我的服務器上建立一個id,它知道他們的電子郵件地址是[email protected],由google自己進行驗證。Android應用程序中的Google帳戶授權
我發現了關於如何去做這件事的廣泛和多樣的部分食譜,包括谷歌自己的oauth2文檔,但沒有理解如何使這一切發生。
我確實有Android代碼,它使用AccountManager來確定給定手機上的哪個Google帳戶。我會提醒用戶,他們希望用哪個Google帳戶登錄,然後再獲取授權令牌。
過去這一點,我幾乎旋轉我的輪子。我看了看菜譜,似乎需要我我做這種形式的HTTP GET:
http://<myWebServer>.com/_ah/login?continue=<someUrlIChoose>&auth=<authToken>
...其中(a)是不滿意的,因爲它似乎是具體到AppEngine上,我要自由(b)即使嘗試使用appengine,我設置的appengine實例似乎根本沒有信號,即日誌顯示現在對它的查詢(我正在希望那麼someUrlIChoose url將會被某些東西調用)...因此沒有機會被告知令牌的有效性。
具體問題將包括:
- 我該怎麼辦與身份驗證令牌......做我發送到我的服務器,並 不知爲什麼我的服務器聯繫谷歌驗證令牌的有效性 爲指定的帳戶?還是有一些backchannel 通信應該已經(在這個階段的 進程)起源於谷歌服務器通知我的服務器,這個令牌 有效(如果是這樣,我該如何設置)?或者其他的東西 ?
- 我是否有權假定這個過程應該可以在任何後端的 上下文中執行(不僅僅是appengine)?
- 是oauth2我應該用什麼(而不是oauth1,或其他 其他)?我讀過的每件事似乎暗示谷歌對 oauth2的支持是「實驗性的」......但我還沒有確定這樣的 斷言是現在的還是舊的;即使目前,谷歌有一個 保持各種產品永久非最終形式(例如 永久測試版)的歷史,所以我不知道該怎麼得出結論。
- 中還有其他的相關...