一、QQ登录工具AgentLogin

1、AgentLogin介绍

⽬前只⽀持 腾讯QQ,微信,微博的第三⽅登录
该⼯具封装了QQ登录时对接QQ互联接⼝的请求操作。可⽤于快速实现QQ登录功能。

2、AgentLogin安装

pip install AgentLogin

3、AgentLogin使⽤说明

from AgentLogin import AgentLogin

获取扫码⻚⾯地址

qq_url = AgentLogin.qq_url(client_id, redirect_uri)

<a href="{{ qq_url }}">QQ登录<a>
client_id:QQ互联上应⽤的APPID
redirect_uri: QQ互联上应⽤的⽹站回调域

获取⽤户名和openid

AgentLogin.qq(client_id, client_secret, url, code)

获取⽤户所有信息

AgentLogin.all_qq(client_id, client_secret, url, code)

client_id:QQ互联上应⽤的 APPID
client_secret: QQ互联上应⽤的APP Key
url: QQ互联上应⽤的⽹站回调域
code: 从QQ服务器得到code
注意此code会在10分钟内过期

二、通过OAuth2.0认证获取openid

1、获取QQ登录扫码⻚⾯

4.后端逻辑实现

路由:

from django.urls import re_path,path
from .import viewsurlpatterns=[re_path('^qq/login/$',views.QQLoginURLView.as_view()),
]
class QQLoginView(View):def get(self,request):'''获取QQ扫码登录链接'''qq_url=AgentLogin.qq_url(client_id=settings.QQ_CLIENT_ID,redirect_url=settings.QQ_REDIRECT_URI)return JsonResponse({'code':200,'errormsg':'ok','login_url':qq_url})

https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&client_id=xxxxxxxxx%20%20%20%20&redirect_uri=http://www.nagle.cn:8083/about&scope=get_user_info

5、QQ登录参数

# QQ登录的配置参数
QQ_CLIENT_ID = '101917966'          #app id
QQ_REDIRECT_URI = 'http://www.nagle.cn:8083/about'  #回调地址
QQ_APP_KEY = '20fcc768255829c08fa4efbe8acf0001'     #app key

三、接收Authorization Code和OAuth2.0认证获取openid

扫码成功后展示的页面
http://www.nagle.cn:8083/about/?code=34C1002C560320F5B2FFCE850B38A666

提示:

  • ⽤户在QQ登录成功后,QQ会将⽤户重定向到我们配置的回调⽹址。
  • 在QQ重定向到回调⽹址时,会传给我们⼀个Authorization Code。
  • 我们需要拿到Authorization Code并完成OAuth2.0认证获取openid。
  • 在本项⽬中,我们申请QQ登录开发资质时配置的回调⽹址为:http://www.nagle.cn:8083/about
  • QQ互联重定向的完整⽹址为http://www.nagle.cn:8083/about/?code=34C1002C560320F5B2FFCE850B38A666

配置回调地址路由

from django.urls import re_path,path
from .import viewsurlpatterns=[re_path('^qq/login/$',views.QQLoginURLView.as_view()),re_path('^about/$',views.QQAuthUserView.as_view()),
]

视图:

class QQAuthUserView(View):def get(self,request):'''获取openid'''#1、获取Authorization code参数code=request.GET.get('code','')#2、校验参数if not code:return http.HttpResponseForbidden('缺少code参数')#3、调用接口方法获取openidnickname,openid=AgentLogin.qq(client_id=settings.QQ_CLIENT_ID,client_secret=settings.QQ_APP_KEY,url=settings.QQ_REDIRECT_URI,code=code)#4、通过openid判断用户是否绑定项目用户try:qq_user=QQAuthUser.objects.get(openid=openid)except QQAuthUser.DoesNotExist:#QQ用户没有绑定项目用户#加密openid数据sec_openid=generate_escret_openid(openid)#传递加密数据到用户绑定页面return render(request,'oauth/oauth_user.html',{'sec_openid':sec_openid})else:#QQ用户绑定了项目用户#获得关联的项目用户对象user=qq_user.user#状态保持login(request,user)#响应结果return redirect(reverse('newsapp:index'))

四、本机绑定www.nagle.cn域名

http://www.nagle.cn:8083/about/?code=34C1002C560320F5B2FFCE850B38A666

1、ubuntu系统或者Mac系统

sudo vi /etc/hosts127.0.0.1   www.nagle.cn

2、修改dev.py配置⽂件
ALLOWED_HOSTS = ['www.nagle.cn','127.0.0.1']

3、修改服务器端⼝号

【django】用户登录模块实现步骤(二)之QQ登录工具AgentLogin和通过OAuth2.0认证获取openid【33】相关推荐

  1. 【django】用户登录模块实现步骤(一)之QQ登录模型类【32】

    一.QQ登录流程分析 二.户登录 QQ登录成功后,我们需要将QQ户和芒果头条户关联到起,便下次QQ登录时使,所以我们选择使MySQL数据库进存储. 1.定义QQ登录模型类 创建个新的应oauth,来实 ...

  2. 基于localStorge开发登录模块的记住密码与自动登录

    前沿||我是乐于分享,善于交流的鸟窝 先做写一篇关于登录模块中记住密码与自动登录的模块.鸟窝微信:jkxx123321 关于这个模块功能模块的由来,这是鸟大大的处女秀,为什么这么说呢?一天在群里,一个 ...

  3. PyQt5教程(十二)——实现QQ登录界面(六、实现鼠标拖动界面,鼠标事件)

    PyQt5教程(十二)--实现QQ登录界面(五.实现鼠标拖动界面,鼠标事件) 一.实现界面可以随着鼠标进行拖动 1.主要就是对鼠标事件的实现: def mousePressEvent(self, ev ...

  4. Java微信公众平台开发(十六)--微信网页授权(OAuth2.0授权)获取用户基本信息

    转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静 ...

  5. Spring Security OAuth2.0认证授权五:用户信息扩展到jwt

    历史文章 [Spring Security OAuth2.0认证授权一:框架搭建和认证测试] [Spring Security OAuth2.0认证授权二:搭建资源服务] [Spring Securi ...

  6. android新浪微博Oauth2.0认证以及登录

    前言:微博作为新兴的一项网络工具,在某种意义上讲实现了把世界变小的作用.足不出户,也变成了现实.作为程序员我们更加关注的是为我所用.幸好的是微博运行商为我们提供了丰富的接口,我们可以善用这些接口.首先 ...

  7. python安卓qq登录_python 前后端不分离 QQ登录,微博登录

    # QQ登录和用户中心 # QQ 登录 ##### 点了QQ 按钮--京东后台--->login_qq_url--->用户,账号扫码---->京东商城--->code----& ...

  8. Spring Security使用(三) 安全框架内使用QQ登录以及不加安全框架使用QQ登录

    本文章的代码在第二篇(Spring Security使用(二) 异步登录 | 代码日志 (fanxing.live))的代码上继续完成 腾讯互联 申请地址:QQ互联官网首页 接入教程:网站应用接入概述 ...

  9. java仿qq登录 界面设计,Java Swing仿QQ登录界面效果

    本文实例为大家分享了Java Swing仿QQ登录界面展示的具体代码,供大家参考,具体内容如下 闲来无事将早些时候已实现的QQ登录界面再实现了一遍,纯手工打造(意思是没有用NetBeans.MyEcl ...

最新文章

  1. Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记
  2. 曈曈妈妈设计的2010年台历模板
  3. 软件作坊模式工件应用论
  4. subsonic mysql_Subsonic 介绍
  5. Int,Long比较重使用equal替换==
  6. CGLIB介绍与原理(通过继承的动态代理)
  7. 大白话5分钟带你走进人工智能-第二十六节决策树系列之Cart回归树及其参数(5)...
  8. 使用Java EE安全性和JBoss AS 7.x保护JSF应用程序的安全
  9. 信息学奥赛一本通(2064:【例2.1】交换值)
  10. 6. access_token
  11. JavaScript 实现简单的移动和缓动的效果
  12. 伦斯勒理工学院计算机科学专业强吗,伦斯勒理工学院专业排名一览及最强专业推荐(USNEWS美国大学排名)...
  13. 醉林疯的OJ 1055: 兔子繁殖问题
  14. 猿辅导9-12编程题3道
  15. python 文字转语音 带情感_Python文字转换语音,让你的文字会「说话」抠脚大汉秒变撒娇萌妹...
  16. 只会Python可造不出iPhone
  17. 你真懂吗?C++ 四种 cast 转换
  18. VS2013运行库/MD、/MDd、/MT、/MTd
  19. oracle获取当前时间顺延指定工作日的日期
  20. java面试题集中了好几篇的搜索的

热门文章

  1. 索尼入局汽车市场,新能源汽车将成主流
  2. 备赛电赛学习STM32篇(七):TIM输入捕获
  3. 使用openGL,用Bresenham算法画椭圆
  4. 云原生周报 | K8s 官方推出纪录片;BFE 2021开源总结;服务网格在联通的落地实践
  5. 整体压缩跟分开压缩哪个更小_2020年新能效发布,美的空调哪个系列好?美的空调推荐...
  6. Python学多久才能独立接单赚钱?一个月足够了,本人私藏的学习计划分享给大家
  7. 最通俗易懂的LSTM讲解,一个例子理解通透!!
  8. lisp读点坐标绘多义线_多段线点导出和导入点坐标成多段线(AutoLISP源码)——好用的AutoCAD点坐标导入导出工具...
  9. 2.10 窗口的拆分与隐藏 [原创Excel教程]
  10. 三星手机大量死机!我反编译折腾半天后,发现竟然一个汉字引发的....