QQ登錄OAuth2.0的處理流程
QQ登錄OAuth2.0的處理流程主要包括以下三個(gè)步驟:
1. 獲取access_token;
2. 根據(jù)access_token獲得對應(yīng)用戶身份的openid;
3. 根據(jù)access_token與openid調(diào)用OpenAPI,來請求訪問或修改用戶授權(quán)的資源(例如用戶資料,日志,相冊,說說等信息)。
為方便網(wǎng)站快速接入,QQ登錄提供了JS SDK,粘貼代碼到網(wǎng)頁,即可實(shí)現(xiàn)QQ登錄功能。
為方便移動應(yīng)用快速接入,QQ登錄提供了Android SDK和IOS SDK,應(yīng)用只需要修改少量代碼,即可快速實(shí)現(xiàn)QQ登錄功能。
Step1:獲取access_token
QQ登錄OAuth2.0針對網(wǎng)站、移動應(yīng)用、桌面應(yīng)用分別提供了不同的登錄驗(yàn)證和授權(quán)流程,目前提供以下2種獲取access token的方式:
1. server-side模式
即OAuth官方文檔中提到的Authorization Code模式,適用于需要從web server訪問的應(yīng)用。
2. client-side模式
即OAuth官方文檔中提到的Implicit模式,適用于需要通過客戶端訪問的方式。
以上兩種模式僅在獲取access_token時(shí)有所區(qū)別,后續(xù)獲取openid、調(diào)用API等方式均相同。
登錄成功后,開發(fā)者會得到表示此次登錄信息的access token,此參數(shù)在訪問用戶授權(quán)信息中會用到。
access token由每次用戶登錄時(shí)生成,過期時(shí)間默認(rèn)為三個(gè)月,用戶再次登錄時(shí)自動刷新。
Step2:根據(jù)access_token獲得對應(yīng)用戶身份的openid
請求地址:
PC網(wǎng)站:https://graph.qq.com/oauth2.0/me
WAP網(wǎng)站:https://graph.z.qq.com/moc2/me
請求方法:
GET
請求參數(shù):
請求參數(shù)請包含如下內(nèi)容:
返回說明:
PC網(wǎng)站接入時(shí),獲取到用戶OpenID,返回包如下:
WAP網(wǎng)站接入時(shí),返回如下字符串:
openid是此網(wǎng)站上唯一對應(yīng)用戶身份的標(biāo)識,網(wǎng)站可將此ID進(jìn)行存儲便于用戶下次登錄時(shí)辨識其身份,或?qū)⑵渑c用戶在網(wǎng)站上的原有賬號進(jìn)行綁定。
錯(cuò)誤碼說明:
接口調(diào)用有錯(cuò)誤時(shí),會返回code和msg字段,以url參數(shù)對的形式返回,value部分會進(jìn)行url編碼(UTF-8)。
PC網(wǎng)站接入時(shí),錯(cuò)誤碼詳細(xì)信息請參見:100000-100031:PC網(wǎng)站接入時(shí)的公共返回碼。
WAP網(wǎng)站接入時(shí),錯(cuò)誤碼詳細(xì)信息請參見:9000-9999:根據(jù)Access Token獲得對應(yīng)用戶身份的openid時(shí),發(fā)生錯(cuò)誤。
Step3:調(diào)用OpenAPI,來請求訪問或修改用戶授權(quán)的資源
調(diào)用OpenAPI時(shí)需要用到如下3個(gè)值:
YOUR_APP_ID:即申請QQ登錄成功后分配的appid(如222222)
YOUR_ACCESS_TOKEN:Step1獲取到的access token,必須保證未過期(如E0632E6CE12AC709999)
YOUR_OPENID:Step2獲取到的openid,用戶唯一標(biāo)識(如B9DD537D1C5C98A9999)