Python自动登录QQ,python登录页面代码

  Python自动登录QQ,python登录页面代码

  在访问之前,需要申请相应的appid和appkey,以保证网站和用户在后续过程中能够得到正确的验证和授权。http://wiki.connect.qq.com/__trashed-2

  登录QQ开发文档,连接http://wiki.connect.qq.com/准备工作_oauth2-0

  腾讯互联网平台没有python SDK,我们用的是打包的SDK包。

  设置:pip安装QQLoginTool

  导入:从QQ log in tool . QQ工具导入oauth QQ

  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时填写的主域名下的地址。建议设置为网站首页或者网站用户中心。注意网址URLEncode。state:state:客户端的状态值。由第三方应用程序用来防止CSRF攻击,并且在成功授权后回调时将被恢复原样。一定要严格按照流程检查用户与状态参数state的绑定。Get_qq_url(self) #获取qq登录页面的URL Get _ access_token(self,code) #获取access _ token值Get _ open_id (self,access _ token) #获取open_id值。以Django为例实现QQ:获取QQ登录网页网址的第三方登录流程

  界面设计:

  请求方法:GET/?状态=xxx

  请求参数:

  无论参数类型是否必须声明statestr,成功登录后的跳转页面路径返回数据:JSON

  { log in _ URL : https://graph . QQ . com/oauth 2.0/show?which=log in display=PC response _ type=code client _ id=* * redirect _ uri=* * state=* * scope=* * }返回值表示login_urlqq登录URL代码实现:

  来自QQLoginTool。QQtool导入OAuthQQfrom django.conf导入设置from rest_framework.views导入APIView.# Get login _ URL类oauthqglogin(API view):def Get(self,request): # Get参数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)# Get log in _ URL log in _ URL=oauth . Get _ QQ _ URL()# Return log in _ URL Return response({ log in _ URL :log in _ URL })获取openid

  当QQ将用户重定向到该网页时,重定向的URL将携带QQ提供的用于获取用户信息的代码参数。我们需要将这个code参数发送到后端,在后端使用code参数向QQ请求用户的身份信息。

  /oauth_callback.html?Code=****state=/oauth_callback页面,用于扫码后接受授权码。

  通过授权码获取访问令牌

  然后通过访问令牌获取openid。

  界面设计:

  请求方法:GET/?代码=xxx

  请求参数:

  参数类型一定要注明codestr是qq返回的授权证书吗?代码返回的数据:JSON

  {openid: xxxx}返回值表示openid用户的id,与QQ号一一对应。代码实现:

  来自QQLoginTool。QQ tool import oauthqq from django . conf import settings from its dangerous import time djsonwebsignatureserializer as tjs from rest _ frame wor k . views import API view.# Get OpenID类oauthqtoken(API view):def Get(self,request):# Get code code=request . query _ params . Get( code ,None) #判断是否有。如果没有直接返回如果不是代码:返回响应({ message : missing code })OAuth=OAuth QQ(client _ id=settings . QQ _ client _ id,client_secret=settings。QQ_CLIENT_SECRET,Redirect _ uri=settings . QQ _ Redirect _ uri)try:#使用代码请求access _ token access _ token=oauth . get _ access _ token(code)#使用access _ token获取OpenID OpenID=oauth . get _ open _ id(access _ token)除:返回响应({message: QQ服务异常 }).下面可以根据具体需要进一步向后扩展.以上内容仅供参考-_-.是作者在学习时提炼和概括的内容。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: