日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

django项目学习之QQ登录

發(fā)布時(shí)間:2025/3/20 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django项目学习之QQ登录 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近在用django框架寫一個(gè)商城項(xiàng)目(前后端分離),里面用到的一些技術(shù)其他項(xiàng)目也可以借鑒,于是就想寫一些博客記錄,以防自己忘記,今天先寫一個(gè)關(guān)于登錄接口中引入QQ登錄接口的流程。

關(guān)于QQ登錄接口的引入,在qq官方文檔有詳細(xì)說(shuō)明,網(wǎng)址如下:

?http://wiki.connect.qq.com/%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C_oauth2-0

不過(guò)該文檔中并沒(méi)有python的,需要自己去造輪子,下面我就來(lái)記錄一下流程。

首先講一下準(zhǔn)備工作,先去QQ提供的第三方接口網(wǎng)站申請(qǐng)一個(gè)appid和appkey,關(guān)于這兩個(gè)數(shù)據(jù),我沒(méi)有深入研究,因?yàn)楦业臉I(yè)務(wù)邏輯沒(méi)什么關(guān)聯(lián),QQ官方對(duì)這兩個(gè)數(shù)據(jù)描寫如下:

appid:應(yīng)用的唯一標(biāo)識(shí)。在OAuth2.0認(rèn)證過(guò)程中,appid的值即為oauth_consumer_key的值。
appkey:appid對(duì)應(yīng)的密鑰,訪問(wèn)用戶資源時(shí)用來(lái)驗(yàn)證應(yīng)用的合法性。在OAuth2.0認(rèn)證過(guò)程中,appkey的值即為oauth_consumer_secret的值。

然后是具體流程部分:首先來(lái)講一下大概的流程,

你需要在登錄界面放置一個(gè)QQ登錄的接口,去請(qǐng)求QQ登錄的界面,該接口的功能應(yīng)該就是拼接一個(gè)QQ登錄的url,然后通過(guò)GET方式去訪問(wèn)QQ登錄的界面。

訪問(wèn)到QQ的登錄界面后,用戶進(jìn)行登錄,登錄完成后,則會(huì)跳轉(zhuǎn)到回調(diào)地址,請(qǐng)求方式為GET,即你上面填寫的redirect_uri,同時(shí)會(huì)帶上兩個(gè)參數(shù),Authorization Code和status,這里的status就是你填寫的status,Authorization Code是QQ服務(wù)器生成的一串字符,你可以通過(guò)該字符獲得access_token(即登錄時(shí)需要的token值)。獲得到對(duì)應(yīng)的token值后,會(huì)在對(duì)QQ服務(wù)器在進(jìn)行請(qǐng)求,請(qǐng)求方式為GET,請(qǐng)求一個(gè)openid。

根據(jù)openid來(lái)判斷該QQ用戶和我們網(wǎng)站的用戶是否有關(guān)聯(lián),在返回相應(yīng)的頁(yè)面

首先來(lái)詳細(xì)講下第一步,這一步對(duì)應(yīng)QQ官方的文檔中的獲取Access Token那一步中的第一步,查閱文檔,訪問(wèn)的url為https://graph.qq.com/oauth2.0/authorize,當(dāng)然這里我們需要一些必填參數(shù),由于請(qǐng)求方式為GET,所以參數(shù)只能以查詢字符串的形式發(fā)送,第一個(gè)參數(shù)是response_type,固定為code,格式為字符串,第二個(gè)參數(shù)是client_id,這個(gè)需要填寫你申請(qǐng)的appid,第三個(gè)參數(shù)為redirect_uri,該參數(shù)需填寫成功授權(quán)后的回調(diào)地址,必須是注冊(cè)appid時(shí)填寫的主域名下的地址,建議設(shè)置為網(wǎng)站首頁(yè)或網(wǎng)站的用戶中心。注意需要將url進(jìn)行URLEncode。最后一個(gè)參數(shù)為state,該參數(shù)表示client端的狀態(tài)值。用于第三方應(yīng)用防止CSRF攻擊,成功授權(quán)后回調(diào)時(shí)會(huì)原樣帶回。在這里我們用來(lái)接收url中的next參數(shù)中的數(shù)據(jù)。訪問(wèn)成功,用戶登錄后,會(huì)跳轉(zhuǎn)到回調(diào)鏈接,并帶上code參數(shù)和status參數(shù)。

然后是第二步,這一步涉及兩個(gè)參數(shù)的請(qǐng)求,首先是access_token,這一步對(duì)應(yīng)QQ官方的文檔中的獲取Access Token那一步中的第二步,查閱文檔,訪問(wèn)的url為https://graph.qq.com/oauth2.0/token,如上,這里也有一些必填參數(shù),第一個(gè)參數(shù)為grant_type,默認(rèn)為“authorization_code”,我們照填即可,第二個(gè)參數(shù)為client_id,同第一步,第三個(gè)參數(shù)為client_secret,這個(gè)需要填寫你申請(qǐng)的appkey,第四個(gè)參數(shù)為code,即回調(diào)時(shí)傳過(guò)來(lái)的code參數(shù),最后一個(gè)參數(shù)為redirect_uri,同第一步。返回成功后,我們可以從返回的包中獲取到相應(yīng)的數(shù)據(jù),從返回的數(shù)據(jù)中我們可以得到access_token的值

類似:access_token=FE04************************CCE2&expires_in=7776000&refresh_token=88E4************************BE14

獲得到對(duì)應(yīng)的token后,會(huì)在向QQ服務(wù)器請(qǐng)求一個(gè)openid,這一步對(duì)應(yīng)QQ官方的文檔中的獲取openid的那一步,訪問(wèn)的url為https://graph.qq.com/oauth2.0/me,這一步只有一個(gè)必傳參數(shù)access_token,即上一步請(qǐng)求得到的token值,返回成功后,會(huì)得到以下包數(shù)據(jù)

callback({"client_id":"YOUR_APPID", "openid":"YOUR_OPENID"})\n;? 從該數(shù)據(jù)可以得到我們需要的openid,根據(jù)對(duì)應(yīng)的openid來(lái)返回對(duì)應(yīng)的頁(yè)面。

轉(zhuǎn)載于:https://www.cnblogs.com/HZHST/p/11287463.html

總結(jié)

以上是生活随笔為你收集整理的django项目学习之QQ登录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。