目錄[隱藏] |
1. 什麼是“QQ登錄OAuth2.0”
OAuth: OAuth(開放授權)是一個開放標準,允許用戶授權第三方網站訪問他們存儲在另外的服務提供者上的信息,而不需要將用戶名和密碼提供給第三方網站或分享他們數據的所有內容。
QQ登錄OAuth2.0:對於用戶相關的OpenAPI(例如獲取用戶信息,動態同步,照片,日誌,分享等),爲了保護用戶數據的安全和隱私,第三方網站訪問用戶數據前都需要顯式的向用戶徵求授權。
QQ登錄OAuth2.0採用OAuth2.0標準協議來進行用戶身份驗證和獲取用戶授權,相對於之前的OAuth1.0協議,其認證流程更簡單和安全。
Tips:
如果您想對OAuth2.0開放標準進行擴展閱讀,請參看:OAuth標準(英文)
|
OAuth維基百科(中文)
2. 準備工作
申請appid和appkey
申請地址:
http://connect.qq.com/intro/login/
申請流程:
1. 點擊頁面上的“申請加入”按鈕,申請成爲開發者;
2. 申請appid(oauth_consumer_key/client_id)和appkey(auth_consumer_secret/client_secret);
(1)進入
http://connect.qq.com/manage/ 頁面,點擊“立即添加”,在彈出的對話框中填寫網站或應用的詳細資料(名稱,域名,回調地址);
(2)點擊“確定”按鈕,提交資料後,獲取appid和appkey。
注意:申請appid時,登錄的QQ號碼將與申請到的appid綁定,後續維護均需要使用該號碼。
保證連接暢通
接入QQ登錄時,網站需要不停的和手機Qzone進行交互,發送請求和接受響應。
PC網站:在你的服務器上ping graph.qq.com,保證連接暢通。
WAP網站:在你的服務器上ping open.z.qq.com 和 ping graph.z.qq.com,保證連接暢通。
3. QQ登錄OAuth2.0的處理流程
QQ登錄OAuth2.0的處理流程主要包括以下三個步驟:
1. 獲取access_token;
2. 根據access_token獲得對應用戶身份的openid;
3. 根據access_token與openid調用OpenAPI,來請求訪問或修改用戶授權的資源(例如用戶資料,日誌,相冊,說說等信息)。
爲方便網站快速接入,QQ登錄提供了JS SDK,粘貼代碼到網頁,即可實現QQ登錄功能。
爲方便移動應用快速接入,QQ登錄提供了Android SDK和IOS
SDK,應用只需要修改少量代碼,即可快速實現QQ登錄功能。
Step1:獲取access_token
QQ登錄OAuth2.0針對網站、移動應用、桌面應用分別提供了不同的登錄驗證和授權流程,目前提供以下2種獲取access token的方式:
1.
server-side模式
即OAuth官方文檔中提到的Authorization Code模式,適用於需要從web server訪問的應用。
2.
client-side模式
即OAuth官方文檔中提到的Implicit模式,適用於需要通過客戶端訪問的方式。
以上兩種模式僅在獲取access_token時有所區別,後續獲取openid、調用API等方式均相同。
登錄成功後,開發者會得到表示此次登錄信息的access token,此參數在訪問用戶授權信息中會用到。
access token由每次用戶登錄時生成,過期時間默認爲三個月,用戶再次登錄時自動刷新,請網站或應用做好防過期策略,或過期後提示用戶再次授權。
Step2:根據access_token獲得對應用戶身份的openid
請求地址:
PC網站:https://graph.qq.com/oauth2.0/me
WAP網站:https://graph.z.qq.com/moc2/me
請求方法:
GET
請求參數:
請求參數請包含如下內容:
參數 | 是否必須 | 含義 |
---|---|---|
access_token | 必須 | 在Step1中獲取到的access token。 |
返回說明:
PC網站接入時,獲取到用戶OpenID,返回包如下:
callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} );
WAP網站接入時,返回如下字符串:
client_id=100222222&openid=1704************************878C
openid是此網站上唯一對應用戶身份的標識,網站可將此ID進行存儲便於用戶下次登錄時辨識其身份,或將其與用戶在網站上的原有賬號進行綁定。
錯誤碼說明:
接口調用有錯誤時,會返回code和msg字段,以url參數對的形式返回,value部分會進行url編碼(UTF-8)。
PC網站接入時,錯誤碼詳細信息請參見:100000-100031:PC網站接入時的公共返回碼。
WAP網站接入時,錯誤碼詳細信息請參見:9000-9999:根據Access Token獲得對應用戶身份的openid時,發生錯誤。
Step3:調用OpenAPI,來請求訪問或修改用戶授權的資源
調用OpenAPI時需要用到如下3個值:
YOUR_APP_ID:即申請QQ登錄成功後分配的appid(如222222)
YOUR_ACCESS_TOKEN:Step1獲取到的access token,必須保證未過期(如E0632E6CE12AC709999)
YOUR_OPENID:Step2獲取到的openid,用戶唯一標識(如B9DD537D1C5C98A9999)
詳見:【QQ登錄】OpenAPI2.0調用說明
4. 新手指引
我們提供了兩種典型的應用使用Qzone_OAuth2.0驗證方式的新手指引:
1.
【QQ登錄】開發攻略_Server-side
在指引中以實例step-by-step的講解OAuth2.0的授權驗證,以及訪問OpenAPI獲取用戶信息的過程。