日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django项目学习之QQ登录

發布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django项目学习之QQ登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

關于QQ登錄接口的引入,在qq官方文檔有詳細說明,網址如下:

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

不過該文檔中并沒有python的,需要自己去造輪子,下面我就來記錄一下流程。

首先講一下準備工作,先去QQ提供的第三方接口網站申請一個appid和appkey,關于這兩個數據,我沒有深入研究,因為跟我的業務邏輯沒什么關聯,QQ官方對這兩個數據描寫如下:

appid:應用的唯一標識。在OAuth2.0認證過程中,appid的值即為oauth_consumer_key的值。
appkey:appid對應的密鑰,訪問用戶資源時用來驗證應用的合法性。在OAuth2.0認證過程中,appkey的值即為oauth_consumer_secret的值。

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

你需要在登錄界面放置一個QQ登錄的接口,去請求QQ登錄的界面,該接口的功能應該就是拼接一個QQ登錄的url,然后通過GET方式去訪問QQ登錄的界面。

訪問到QQ的登錄界面后,用戶進行登錄,登錄完成后,則會跳轉到回調地址,請求方式為GET,即你上面填寫的redirect_uri,同時會帶上兩個參數,Authorization Code和status,這里的status就是你填寫的status,Authorization Code是QQ服務器生成的一串字符,你可以通過該字符獲得access_token(即登錄時需要的token值)。獲得到對應的token值后,會在對QQ服務器在進行請求,請求方式為GET,請求一個openid。

根據openid來判斷該QQ用戶和我們網站的用戶是否有關聯,在返回相應的頁面

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

然后是第二步,這一步涉及兩個參數的請求,首先是access_token,這一步對應QQ官方的文檔中的獲取Access Token那一步中的第二步,查閱文檔,訪問的url為https://graph.qq.com/oauth2.0/token,如上,這里也有一些必填參數,第一個參數為grant_type,默認為“authorization_code”,我們照填即可,第二個參數為client_id,同第一步,第三個參數為client_secret,這個需要填寫你申請的appkey,第四個參數為code,即回調時傳過來的code參數,最后一個參數為redirect_uri,同第一步。返回成功后,我們可以從返回的包中獲取到相應的數據,從返回的數據中我們可以得到access_token的值

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

獲得到對應的token后,會在向QQ服務器請求一個openid,這一步對應QQ官方的文檔中的獲取openid的那一步,訪問的url為https://graph.qq.com/oauth2.0/me,這一步只有一個必傳參數access_token,即上一步請求得到的token值,返回成功后,會得到以下包數據

callback({"client_id":"YOUR_APPID", "openid":"YOUR_OPENID"})\n;? 從該數據可以得到我們需要的openid,根據對應的openid來返回對應的頁面。

轉載于:https://www.cnblogs.com/HZHST/p/11287463.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。