189 8069 5689

用python登录qq的方法-创新互联

创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!

目前创新互联已为超过千家的企业提供了网站建设、域名、网络空间、网站托管运营、企业网站设计、保亭黎族网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

小编给大家分享一下用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的方法有了一定的了解,想了解更多相关知识,欢迎关注创新互联-成都网站建设公司行业资讯频道,感谢各位的阅读!


分享标题:用python登录qq的方法-创新互联
网页URL:http://cdxtjz.cn/article/ddsscj.html

其他资讯