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

#請求參數:

請求參數請包含以下內容:


QQ截图20170209150321.png

回傳說明:

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,使用者唯一識別(如B95387D1

##