亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

用python登錄qq的方法

發布時間:2020-07-31 11:56:12 來源:億速云 閱讀:189 作者:清晨 欄目:編程語言

小編給大家分享一下用python登錄qq的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

應用接入前,首先需進行申請,獲得對應的appid與appkey,以保證后續流程中可正確對網站與用戶進行驗證與授權。http://wiki.connect.qq.com/__trashed-2

QQ登錄開發文檔連接 http://wiki.connect.qq.com/準備工作_oauth3-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

請求參數:

用python登錄qq的方法

返回數據:JSON

{
    login_url": "https://graph.qq.com/oauth3.0/show?which=Login&display=pc&response_type=code&client_id=**&
    redirect_uri=**&state=**&scope=**"
}

用python登錄qq的方法

代碼實現:

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

請求參數:

用python登錄qq的方法

返回數據:JSON

{
    "openid": xxxx 
}

用python登錄qq的方法

代碼實現:

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登錄qq的方法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

资兴市| 永新县| 双江| 昌邑市| 景谷| 西宁市| 高阳县| 鹤庆县| 博白县| 伊春市| 汶川县| 虎林市| 罗田县| 黎城县| 资源县| 油尖旺区| 衡山县| 乐都县| 轮台县| 大埔县| 梅州市| 沾益县| 石棉县| 泸州市| 南澳县| 长泰县| 五原县| 固安县| 巫山县| 新安县| 娱乐| 鄄城县| 交城县| 江津市| 泰和县| 怀柔区| 灵宝市| 巴塘县| 苏尼特右旗| 栖霞市| 皮山县|