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