1. 程式人生 > >網站實現QQ第三方登入詳細步驟

網站實現QQ第三方登入詳細步驟

一、準備工作:申請appid,appkey,回撥地址(申請時填寫的回撥地址,重要!)

二、放置QQ登入按鈕:其實就是給你要實現QQ登入的地方繫結一個onclick點選事件

 

如:給如圖示圖示繫結一個onclick點選事件,在對應函式裡寫一個http請求去伺服器端處理QQ登入(安全考慮)

三、獲取Authorization Code值:

  1. 請求網址:

url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=" + appid + "&redirect_uri=" + redirectURI

+ "&state=" + state

     2.  引數及其對應值:

response_type的值固定為code;

client_id的值為申請的appid;

redirect_uri的值為申請時填寫的回撥地址;(注意:需要將url進行編碼!!!)

state值是用來防止CSRF攻擊的,自己隨機產生一段字串此值

    3.  將此url地址返回到前臺,利用window.open在新視窗開啟此網址。若發現未開啟,很有可能是被攔截了。

    4.  請求成功:請求成功後,會開啟QQ登入介面,如圖示:

   5.  返回:當用戶成功授權登入後,會跳轉到上述指定的回撥地址裡,並攜帶引數code和state值。如:redirect_uri?code=**********&state=**********

         code值即為你要獲取到的Authorization Code值

         state值即為上述你隨機產生的字串

四、獲取Access Token值:

  1. 獲取判斷:此時已經走到了回撥地址裡

獲取code值,state值

判斷攜帶的state引數值和你隨機產生的字串是否相等,相等才能往下走!

    2.請求網址:

url = " https://graph.qq.com/oauth2.0/token? grant_type=authorization_code

&client_id=" + appid + "&client_secret="+ appkey

+ "&redirect_uri=" + redirectURI + "&code=" + code

    3.引數及其對應值:

grant_type的值固定為authorization_code;

client_id的值為申請的appid;

client_secret的值為申請的appkey;

redirect_uri的值為申請時填寫的回撥地址;(注意:需要將url進行編碼!!!)

code值為獲取到的Authorization Code值

    4.這個直接在後臺請求就可以了。

    5.請求成功後,返回包如下:(可以手動請求一下該網址,看看返回的是什麼)

"access_token= **********&expires_in=***&refresh_token=**********"

access_token即為我們要獲取到access_token值

expires_in即為access_token值的有效期

refresh_token,忽略。

五、獲取OpenID值:

  1. 獲取access_token值
  2. 請求網址:

     3.引數及其對應值:

access_token值為獲取到的Access Token值

     4.這個也是直接在後臺請求就可以了。

     5.請求成功後,返回包如下:

callbackc ( {"client_id": "**********", "openid": "**********"} )

client_id即為appid

openid即為我們要獲取到的openid值

六、獲取該QQ使用者的相關資訊:

  1. 獲取openid值:此值與使用者QQ號一一對應,不會改變。因此,可以將此值存入資料庫,與網站賬號進行繫結。一般來說,若QQ使用者第一次授權登入,應讓他先進行自己網站的賬號註冊,註冊成功以後就可以直接通過QQ進行登入。
  2. 請求網址:

url = " https://graph.qq.com/user/get_user_info?access_token=" + access_token

+ "&oauth_consumer_key=" + appid + "&openid=" + openid

     3.引數及其對應值:

access_token值為上述獲取到的access_token值

oauth_consumer_key值為申請的appid

openid值為獲取到的openid值

     4.這個還是直接在後臺請求就可以了。

     5.請求成功後,返回包(json資料)如下:

nickname為使用者的暱稱

figureurl_qq_1為使用者不同尺寸的QQ頭像url

gender為使用者性別

……

     6.拿到這些資料後,就可以去前臺展示了。至此,QQ登入完成!