Django使用Social-Auth实现微信第三方网站扫码登录

news/2024/4/28 8:15:21/文章来源:https://blog.csdn.net/weixin_33805992/article/details/89064116

前言

之前让网页公司制作新官网的时候规划有第三方账号的登录功能,但由于当时的一些开放平台申请步骤比较繁琐(尤其是微信开放平台),所以一直拖延着,到了最近只能自己添加相关的功能。

由于是刚接触PythonDjango,期间找了好多视频和资料学习练习,才慢慢把MVT结构什么的弄明白了,第三方登录方面百度找到了两篇很有用的文章,也从中学习到了很多:

1. python实现微信第三方网站扫码登录(Django)
2. 用django-social-auth 做中国社交网站三方登录(QQ,微博,豆瓣,百度,人人,微信)

在实现QQ、微博的登录时就深刻体会到使用social-auth来实现第三方登录是非常简单方便、直接而且完美的,只需要添加配置内容,一句代码都不需要写,真的是一句处理的代码都不需要写哦!
然而却一直没有找到微信怎么也同样来实现(上面第二篇文章虽然标题有,但文章内却压根没有提及);从social-auth的解读文档里也愣是没找到Weixin的内容,由于官网已经有相应的User数据表以及存储第三方的UserSocialAuth数据格,非常规范,在使用上面第一种方法实现之后却苦恼于用户数据表的添加和修改,真心不想破坏那种结构,就在重拾social-auth想学习一下数据库存储方式的时候,竟然在social-backends里发现了Weixin.py,那不就说明能支持微信么?

注意事项

  • 微信开放平台申请及开通需要提交很多认证资料,也需要缴纳¥300每年的认证费用;与公众号、服务号等不一样哦。地址:http://open.weixin.qq.com

  • 认证通过后,添加相应的网页应用,注意授权回调域的填写,写网站的主域名即可,比如说不能写www.zzmxy.com/login/wechat之类的,只需要写www.zzmxy.com 即可(不需要添加http或者https),不然后期都是redirect_uri 参数错误!

实操步骤

  1. 安装social-auth
    由于官网使用的是python-social-auth==0.2.12,下载源码回来之后,发现在social-backends里也是有Weixin.py的,证明可用(Ubuntu + Python2.7 + Django1.7);

    pip install python-social-auth==0.2.12
  2. social-auth配置:

    • SOCIAL_AUTH_PIPELINE配置:请参考上面提及的第二篇文章的书写;

    • AUTHENTICATION_BACKENDS配置:

      AUTHENTICATION_BACKENDS = ('social.backends.weibo.WeiboOAuth2',      #微博的功能'social.backends.qq.QQOAuth2',            #QQ的功能'social.backends.weixin.WeixinOAuth2',    #这个是导入微信的功能'oscar.apps.customer.auth_backends.EmailBackend','django.contrib.auth.backends.ModelBackend',)
    • 微信开放平台应用APPIDSECRET的配置:

      SOCIAL_AUTH_WEIBO_KEY = '53*****29'
      SOCIAL_AUTH_WEIBO_SECRET = '272152************81a8b3'
      SOCIAL_AUTH_QQ_KEY = '10*****51'
      SOCIAL_AUTH_QQ_SECRET = '5807************d15bd97'
      SOCIAL_AUTH_WEIXIN_KEY = 'wx4fb***********599'            #开放平台应用的APPID
      SOCIAL_AUTH_WEIXIN_SECRET = 'f1c17************08c0489'    #开放平台应用的SECRET
  3. 配置完之后,运行你的网站,使用 www.域名.com/login/weixin 访问即可打开相应的页面了,但有没有发现出现错误了:Scope参数错误或没有Scope权限,实际操作过程中,我发现social-auth自动生成的二维码访问链接里,是少了一个scope参数,而微信官方给的二维码访问链接是这样的:

    https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

    如上需要的参数为5个,state可省略,但scope则是必需的,而对于网页授权的访问,scope作用域参数为固定值scope=snsapi_login,这样的话,我们就需要在social-auth的源代码上,把这个参数值给加上,根据你实际的site-packages安装路径,找到/social/backends/weixin.py文件,如我使用VirtualEnv建的路径是:

    /home/ubuntu/env/mppython/lib/python2.7/site-packages/social/backends/weixin.py

    打开这个文件,找到里面def auth_params()这一段内容(原文):

    def auth_params(self, state=None):appid, secret = self.get_key_and_secret()params = {'appid': appid,'redirect_uri': self.get_redirect_uri(state),}if self.STATE_PARAMETER and state:params['state'] = stateif self.RESPONSE_TYPE:params['response_type'] = self.RESPONSE_TYPEreturn params

    params字典里,添加一个scope参数即可,修改后如下:

    def auth_params(self, state=None):appid, secret = self.get_key_and_secret()params = {'appid': appid,'redirect_uri': self.get_redirect_uri(state),'scope': 'snsapi_login',}if self.STATE_PARAMETER and state:params['state'] = stateif self.RESPONSE_TYPE:params['response_type'] = self.RESPONSE_TYPEreturn params

    修改保存后,再重新运行工程,再次访问 www.域名.com/login/weixin 即可看到效果了!

后记

本文的内容是在《用django-social-auth 做中国社交网站三方登录(QQ,微博,豆瓣,百度,人人,微信)》基础上扩展的,有些地方并没有细化或者深入说明(比如说urls的配置等),如果看不太明白的朋友,请转到上述文章查找相关的信息或者留言交流,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_702153.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

技术网站 --人人都是产品经理

2019独角兽企业重金招聘Python工程师标准>>> 人人都是产品经理 http://www.woshipm.com/ 转载于:https://my.oschina.net/u/2312022/blog/522144

网站指标

2019独角兽企业重金招聘Python工程师标准>>> 之前的项目经验主要是集中在移动应用这一块,但是最近在进行的项目在网站方面也需要进行一些很深入的分析,所以自然也就开始了学习网站分析的历程。对于网站来说可能最重要的数据有这么八个&#x…

centos桌面进入服务器,解决如何在centos7桌面中打开终端_网站服务器运行维护

如何解决在Centos中NAT无法上网_网站服务器运行维护在Centos中NAT无法上网的解决方法:首先将网络设置为“DHCP”自动获取IP;然后查看主机的相关服务是否开启;最后重启网络即可。解决如何在centos7桌面中打开终端?1、在图形界面&am…

webzip怎么用 如何用webzip下载整个网站?

相信很多站长对webzip这款软件都并不感到陌生,它功能强大,能够完整下载网站的内容,或者你也可以选择自行设置下载的层数、文件类型、网页与媒体文件的定位等等。具体详情你可以在百度上去搜一下。由于webzip是英文菜单导航,很多新…

搜索引擎是网站还是服务器,搜索引擎其实也是一个______。A.网站B.磁盘C.服务器D.硬件设备...

● TCP/IP (71) layer protocols provide services to the application (72) running on a computer. The application layer does not define the application itself, but rather it defines (73) that applications need—like the ability to transfer a file in the case …

Node.js建站笔记-使用react和react-router取代Backbone

斟酌之后,决定在《嗨猫》项目中引入react,整体项目偏重spa模式,舍弃部分server端的模板渲染,将一部分渲染工作交给前端react实现。 react拥有丰富的组件,虽然不如Backbone和underscore这对老基友成熟,但考虑…

Win2008R2配置WebDeploy发布网站

一、配置服务器 1.安装管理服务 2.点击管理服务进行配置 二.安装WebDeploy 2.1通过离线安装包方式安装: https://www.iis.net/downloads/microsoft/web-deploy离线包没有WebDeploy3.6版本的,不过影响不大2.2通过Web平台安装程序安装: 我当时…

网站迁移的一般步骤、常见问题及解决措施

前言 最近在做网站迁移的工作,在此过程中遇到了很多问题,本文将网站迁移的一般步骤,常见问题和解决办法记录下来,希望帮到大家,少走弯路。 网站迁移的一般步骤、常见问题及解决措施前言一、网站迁移的一般步骤1、备份…

使用GitHub免费搭建属于自己的网站

1、创建仓库 在自己的GitHub上新建自己的仓库,仓库名格式必须为username.github.io,username与自己的GitHub一致,例如下图这般,若已经有这个仓库,会有图中的提示。 2、克隆此仓库(本文使用的Ubuntu&…

tcp时间戳 引起的网站不能访问

目录 问题现象 TCP时间戳说明 解决方法 什么情况下出现这个问题 问题现象 访问一个我们新接入的业务接口,能ping通他们的站点,第一次telnet对端接口会通,第二次、第三次... 一直做下去就不通了,但是连接时超时服务器没有任何…

大型网站架构演变

第二遍阅读《大型网站技术架构》,真心觉得书中的内容很好,推荐大家去阅读。下面是书中对大型网站架构演变过程的介绍。 对于一个小型企业级网站,通常的架构如下图: 随着用户数量的增多,可以将应用服务与数据服务分离以提高性能&am…

百度技术沙龙精英汇聚 探秘大型网站数据库架构设计与性能优化

云计算浪潮汹涌而至,来自四面八方的海量数据已呈爆炸之势,如何给前端用户提供稳定、顺畅、安全、高速的体验服务,这既要求后台数据库系统顺应业务模式的变革不断升级,又能满足数据量爆增所带来的各种存储、查询、分析、挖掘等各种…

笔记本电脑当服务器部署网站,笔记本当云服务器

笔记本当云服务器 内容精选换一换如果在创建弹性云服务器时未设置密码,或密码丢失、过期,可以参见本节操作重置密码。密码丢失或过期前,已安装密码重置插件。公共镜像创建的弹性云服务器默认已安装一键重置密码插件。私有镜像创建的云服务器且…

大型网站系统架构

前言 一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设…

给网站增加https的简单方法

为什么80%的码农都做不了架构师?>>> https://certbot.eff.org/ 转载于:https://my.oschina.net/fox99/blog/1621009

支持全球探测点的新一代网站监控

2019独角兽企业重金招聘Python工程师标准>>> 摘要: 当你的网站开发完成了,你是不是想知道全国各地到服务器的网络访问情况。 当你的网站上线了,你是不是不想变成熊猫眼24小时盯着网站运行情况。 当你的网站商业化了,你…

Windows 08R2 IIS网站架设

目录 目录配置和安装IIS环境设置安装IIS服务器网站的站点目录和欢迎页面 配置和安装IIS IIS是Windows的网站服务器,所以配置IIS服务的前提是需要一个网址、和DNS域名并添加主机记录。 环境设置 我们以下图架构搭建一个类似的IIS服务。我们将DNS服务和IIS服务ALL-…

SEO优化:网站优化的五大步骤

我们在做SEO优化的过程中,不能毫无头绪得去做,不然取得的效果很差,做任何事情,都要有一个好的策划,完整的方案才能做的更好。今天搜客大伟讲讲做网站优化的五大步骤: 1、关键词分析 这是进行SEO优化最重要的…

ThinkSNS积分商城系统 一站式解决企业商城建站需求

2019独角兽企业重金招聘Python工程师标准>>> 什么是ThinkSNS ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS。 积分商城体验PC端地址 http://d…

3000+ NLP资源一网打尽,只需用这个分类检索网站 | 免费

子豪 发自 凹非寺量子位 报道 | 公众号 QbitAINLP资源免费搜索神器来了~有了它,就能一键直达arXiv论文PDF、相关研究的关联网、GitHub存储库,以及Colab,再也不用逐项搜索!这是一个NLP资源检索网站,在reddit上获得了460…