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