如何在Android手機中開發QQ賬戶登陸功能
背景
OAUTH 開發授權協議,為用戶資源的授權提供了一個安全開放而又簡易的標準。可以使用第三方的賬戶登陸另一個方的應用或服務,而不暴露給另一個應用該賬戶的信息。現在已經得到廣泛的應用,比如我們在互聯網上可以看到很多服務可以通過第三方賬號登錄,這樣既避免了用戶注冊的麻煩,也可以使用第三方的資源。
開發流程
一. QQ登錄目前采用OAuth2.0標準協議來進行用戶身份驗證和獲取用戶授權。整個流程如下所述,這里比如一個應用A可以使用QQ賬戶登陸。
1. 用戶訪問客戶端的應用,試圖操作用戶存放在服務提供方的資源。比如用戶用QQ賬戶登錄 應用 A程序,同時可以獲得用戶昵稱頭像等保存在騰訊服務器的用戶信息。
2. 輸入QQ賬號后,應用A后向服務提供方 (騰訊) (Request Token)。 請求一個臨時令牌。
3. 服務提供方 (騰訊)(應用A)的身份后,授予一個臨時令牌。驗證客戶端。
4. 客戶端(應用A)獲得臨時令牌后,將用戶引導至服務提供方(騰訊)的授權頁面請求用戶授權。在這個過程中將臨時令牌和客戶端的 回調連接發送給服務提供方(騰訊)。
5. 用戶在服務提供方(騰訊)的網頁上輸入用戶名和密碼,然后授權該客戶端(應用A)訪問所請求的資源。
6. 授權成功后,服務提供方(騰訊)引導用戶返回到客戶端(應用A)提供的回調頁面。
7. 客戶端(應用A)根據臨時令牌從服務提供方(騰訊)那里獲取訪問令牌 (Access Token)。
8. 根據訪問令牌 (Access Token)獲得對應用戶身份的openid,
9. 然后客戶端(應用A)根據訪問令牌 (Access Token)與openid調用OpenAPI,來請求訪問或修改用戶授權的資源(比如昵稱用戶頭像等經過用戶授權的信息)。
10.拿到訪問令牌 (Access Token)之后,客戶端(應用A)可以保存起來,下次就不用再向服務提供方(騰訊)請求授權,直接就可以使用該賬戶授權的資源,相當于保存了用戶名和密碼,但是真正的用戶名和密碼客戶端(應用A)并不知道。
比如一個信息發布的網站,可以使用QQ賬號登錄,用戶通過安全頁面輸入QQ賬號信息后顯示登陸成功,同時詢問用戶是否允許該網站使用用戶的一些信息,比如資料,相冊等,經過用戶確認后該網站可以拿到用戶授權的信息。同時拿到訪問令牌 (Access Token),以后該網站就可以用這個訪問獲得該用戶的這些授權信息,而不需要再次輸入賬戶信息。一般該網站也要提供刪除這個訪問令牌的入口。這樣就可以很方便的把用戶愿意提供的信息拿到這個信息發布網站使用,而用戶不需要再次登記錄入。
二.QQ 為Android移動設備開發提供QQ登陸的開發包,對上述的過程進行的封裝,對開發者來說可以方便的使用。要真正開發一個使用QQ賬戶登錄的App,就需要在騰訊社區開放平臺注冊應用, 申請對應的 appid 和appkey ,這個開發App 時候要用到。
1. 可以在騰訊開放API站點下載最新的QQ登錄API庫文件和Demo。
Demo介紹了兩種登陸方式,手機瀏覽器和WebView,傳入不同的參數,進入不同的登錄方式,然后輸入賬戶信息后會根據用戶選擇返回不同的結果。開發者可以參考這些對應的代碼即可完成授權登錄的功能開發。
結束語
這里介紹了第三方應用如果使用QQ賬戶登錄,目前國內很多應用和站點都提供了類似的服務,所以這時目前一種比較流行而且實用的方向,這里并沒有對每個細節進行闡述,如有問題可以訪問騰訊的QQ互聯開放平臺。