如何用python登入qq
應用接入前,首先需進行申請,獲得對應的appid與appkey,以保證後續流程中可正確對網站與使用者進行驗證與授權。http://wiki.connect.qq.com/__trashed-2
QQ登入開發文件連線 http://wiki.connect.qq.com/準備工作_oauth2-0
騰訊QQ互聯平臺沒有python SDK,我們使用封裝好的SDK包
安裝:pip install QQLoginTool
匯入:from QQLoginTool.QQtool import OAuthQQ
OAuthQQ類中的方法:
__init__(self, client_id=None, client_secret=None, redirect_uri=None, state=None):
·client_id : 申請QQ登入成功後,分配給應用的appid。
·client_secret:申請QQ登入成功後,分配給網站的appkey。
·redirect_uri:成功授權後的回撥地址,必須是註冊appid時填寫的主域名下的地址,建議設定為網站首頁或網站的使用者中心。注意需要將url進行URLEncode。
·state:client端的狀態值。用於第三方應用防止CSRF攻擊,成功授權後回撥時會原樣帶回。請務必嚴格按照流程檢查使用者與state引數狀態的繫結。
get_qq_url(self) # 獲取QQ登入網頁網址 get_access_token(self, code) # 獲取access_token值 get_open_id(self, access_token) # 獲取open_id值
下面以Django為例實現QQ第三方登入
過程:
獲取QQ登入網頁網址
介面設計:
請求方式:GET /?state=xxx
請求引數:
返回資料:JSON
{ login_url": "https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&client_id=**& redirect_uri=**&state=**&scope=**" }
程式碼實現:
from QQLoginTool.QQtool import OAuthQQ from django.conf import settings from rest_framework.views import APIView ... # 獲取login_url class OauthQQLogin(APIView): def get(self, request): # 獲取前端傳入的引數 state = request.query_params.get('next', None) # 判斷是否有,如果沒有後端建立一個 if not state: state = '/' # 例項化物件 oauth = OAuthQQ(client_id=settings.QQ_CLIENT_ID, client_secret=settings.QQ_CLIENT_SECRET, redirect_uri= settings.QQ_REDIRECT_URI, state=state) # 獲取login_url login_url = oauth.get_qq_url() # 返回login_url return Response({'login_url': login_url})
獲取openid
在QQ將使用者重定向到此網頁的時候,重定向的網址會攜帶QQ提供的code引數,用於獲取使用者資訊使用,我們需要將這個code引數傳送給後端,在後端中使用code引數向QQ請求使用者的身份資訊
/oauth_callback.html?code=****&state=%2F
oauth_callback回撥頁,用於掃碼後接受Authorization Code
透過Authorization Code獲取Access Token
然後透過Access Token獲取openid
介面設計:
請求方式:GET /?code=xxx
請求引數:
返回資料:JSON
{ "openid": xxxx }
程式碼實現:
from QQLoginTool.QQtool import OAuthQQ from django.conf import settings from itsdangerous import TimedJSONWebSignatureSerializer as TJS from rest_framework.views import APIView ... # 獲取openid class OauthQQToken(APIView): def get(self, request): # 獲取前端傳入的code code = request.query_params.get('code', None) # 判斷是否有,如果沒有直接return if not code: return Response({'message': '缺少code'}) oauth = OAuthQQ(client_id=settings.QQ_CLIENT_ID, client_secret=settings.QQ_CLIENT_SECRET,redirect_uri= settings.QQ_REDIRECT_URI) try: # 使用code向QQ伺服器請求access_token access_token = oauth.get_access_token(code) # 使用access_token獲取openid openid = oauth.get_open_id(access_token) except: return Response({'message': 'QQ服務異常'}) ...
python學習網,大量的免費,歡迎線上學習!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2001/viewspace-2835082/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python爬蟲如何用session保持登入?Python爬蟲Session
- Python自動登入QQ的實現示例Python
- 【網頁登入】QQ 登入、微信登入、微博登入、GitHub 登入網頁Github
- 如何用Python爬取需要登入的網站?Python網站
- [API 寫法] QQ 登入、微信登入、Facebook、google、蘋果登入APIGo蘋果
- 關於QQ授權登入
- QQ信任登入(PC端 )申請
- Python培訓分享:python如何用cookie實現自動模擬登入?PythonCookie
- 關於QQ郵箱登入提示一鍵登入解決方案
- 社會化登入分享-QQ SDK接入
- QQ模擬登入實現後篇
- windows 安裝 企業QQ後,個人qq無法登入Windows
- 【求助】不安裝手機QQ可以使用QQ登入APP嗎APP
- 使用Python編寫一個QQ辦公版的圖形登入介面!Python
- 基於 QQ 第三方登入
- QQ 快速登入協議分析與實現協議
- php使用第三方QQ登入PHP
- [外掛擴充套件]qq登入外掛套件
- win10登入qq就卡住怎麼回事 win10電腦一登入qq就卡死如何處理Win10
- win10 如何檢視電腦登入過什麼qq_win10怎麼檢視qq登入記錄Win10
- Java實現QQ第三方登入Java
- QQ快速登入協議分析以及風險反思協議
- laravel實現第三方qq一鍵登入Laravel
- 用 hyperf websocket 實現,類似 qq 單機登入功能Web
- QQ第三方登入認證流程(乾貨)
- win10怎麼用管理員賬戶登入_win10如何用administer登入Win10
- Python-模擬登入Python
- SQL Server 禁用Windows身份登入時忘記其他賬號如sa登入密碼後重置密碼SQLServerWindows密碼
- 簡單實現第三方qq登入和分享
- 簡單仿QQ登入介面,儲存資訊到sd卡SD卡
- Java介面程式設計實戰(一)——簡易QQ登入介面Java程式設計
- win10自帶郵箱無法登入QQ郵箱Win10
- QQ使用者登陸介面
- win10qq強退怎麼辦 win10系統登入qq強退解決方法Win10
- Python——奇怪的掃碼登入Python
- 利用Python模擬GitHub登入PythonGithub
- python中如何寫ssh登入Python
- Win10系統登入QQ提示0x00060017怎麼辦 win10無法登入qq提示0x00060017錯誤程式碼如何修復Win10