【django】用户登录模块实现步骤(二)之QQ登录工具AgentLogin和通过OAuth2.0认证获取openid【33】
一、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】相关推荐
- 【django】用户登录模块实现步骤(一)之QQ登录模型类【32】
一.QQ登录流程分析 二.户登录 QQ登录成功后,我们需要将QQ户和芒果头条户关联到起,便下次QQ登录时使,所以我们选择使MySQL数据库进存储. 1.定义QQ登录模型类 创建个新的应oauth,来实 ...
- 基于localStorge开发登录模块的记住密码与自动登录
前沿||我是乐于分享,善于交流的鸟窝 先做写一篇关于登录模块中记住密码与自动登录的模块.鸟窝微信:jkxx123321 关于这个模块功能模块的由来,这是鸟大大的处女秀,为什么这么说呢?一天在群里,一个 ...
- PyQt5教程(十二)——实现QQ登录界面(六、实现鼠标拖动界面,鼠标事件)
PyQt5教程(十二)--实现QQ登录界面(五.实现鼠标拖动界面,鼠标事件) 一.实现界面可以随着鼠标进行拖动 1.主要就是对鼠标事件的实现: def mousePressEvent(self, ev ...
- Java微信公众平台开发(十六)--微信网页授权(OAuth2.0授权)获取用户基本信息
转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静 ...
- Spring Security OAuth2.0认证授权五:用户信息扩展到jwt
历史文章 [Spring Security OAuth2.0认证授权一:框架搭建和认证测试] [Spring Security OAuth2.0认证授权二:搭建资源服务] [Spring Securi ...
- android新浪微博Oauth2.0认证以及登录
前言:微博作为新兴的一项网络工具,在某种意义上讲实现了把世界变小的作用.足不出户,也变成了现实.作为程序员我们更加关注的是为我所用.幸好的是微博运行商为我们提供了丰富的接口,我们可以善用这些接口.首先 ...
- python安卓qq登录_python 前后端不分离 QQ登录,微博登录
# QQ登录和用户中心 # QQ 登录 ##### 点了QQ 按钮--京东后台--->login_qq_url--->用户,账号扫码---->京东商城--->code----& ...
- Spring Security使用(三) 安全框架内使用QQ登录以及不加安全框架使用QQ登录
本文章的代码在第二篇(Spring Security使用(二) 异步登录 | 代码日志 (fanxing.live))的代码上继续完成 腾讯互联 申请地址:QQ互联官网首页 接入教程:网站应用接入概述 ...
- java仿qq登录 界面设计,Java Swing仿QQ登录界面效果
本文实例为大家分享了Java Swing仿QQ登录界面展示的具体代码,供大家参考,具体内容如下 闲来无事将早些时候已实现的QQ登录界面再实现了一遍,纯手工打造(意思是没有用NetBeans.MyEcl ...
最新文章
- Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记
- 曈曈妈妈设计的2010年台历模板
- 软件作坊模式工件应用论
- subsonic mysql_Subsonic 介绍
- Int,Long比较重使用equal替换==
- CGLIB介绍与原理(通过继承的动态代理)
- 大白话5分钟带你走进人工智能-第二十六节决策树系列之Cart回归树及其参数(5)...
- 使用Java EE安全性和JBoss AS 7.x保护JSF应用程序的安全
- 信息学奥赛一本通(2064:【例2.1】交换值)
- 6. access_token
- JavaScript 实现简单的移动和缓动的效果
- 伦斯勒理工学院计算机科学专业强吗,伦斯勒理工学院专业排名一览及最强专业推荐(USNEWS美国大学排名)...
- 醉林疯的OJ 1055: 兔子繁殖问题
- 猿辅导9-12编程题3道
- python 文字转语音 带情感_Python文字转换语音,让你的文字会「说话」抠脚大汉秒变撒娇萌妹...
- 只会Python可造不出iPhone
- 你真懂吗?C++ 四种 cast 转换
- VS2013运行库/MD、/MDd、/MT、/MTd
- oracle获取当前时间顺延指定工作日的日期
- java面试题集中了好几篇的搜索的
热门文章
- 索尼入局汽车市场,新能源汽车将成主流
- 备赛电赛学习STM32篇(七):TIM输入捕获
- 使用openGL,用Bresenham算法画椭圆
- 云原生周报 | K8s 官方推出纪录片;BFE 2021开源总结;服务网格在联通的落地实践
- 整体压缩跟分开压缩哪个更小_2020年新能效发布,美的空调哪个系列好?美的空调推荐...
- Python学多久才能独立接单赚钱?一个月足够了,本人私藏的学习计划分享给大家
- 最通俗易懂的LSTM讲解,一个例子理解通透!!
- lisp读点坐标绘多义线_多段线点导出和导入点坐标成多段线(AutoLISP源码)——好用的AutoCAD点坐标导入导出工具...
- 2.10 窗口的拆分与隐藏 [原创Excel教程]
- 三星手机大量死机!我反编译折腾半天后,发现竟然一个汉字引发的....