文档章节

微信公众号开发小记——3.接入三方登录

duoduo3_69
 duoduo3_69
发布于 2016/04/15 17:53
字数 826
阅读 187
收藏 10

为什么要接入三方登录

如果你的微信服务器要做复杂的逻辑,比如html5、给用户提供高级的服务,并且有很好看的页面等等,这种时候你就需要一个正常的web服务器,用户打通就需要做三方登录了。

而如果你决定直接用weixin_server做web服务器完全没有问题,80端口给微信留着,剩下的你可以按照一个正常的django项目开发,前端可以接入weixin sdk。

python-socail-auth

我接触python-social-auth已经很久了,其中微信的backend就是我贡献的代码,然而当时做的时候比较年轻,而且这个项目处于一个很大的代码重构中,借这次机会重新用正确的姿势接入了一下三方登录,可以当做一个学习接入三方的demo。顺便提了weixin app登录的backend的一个pr

如果你想用这个weixin_server项目接入三方登录,可以参考**feature/myauth**分支,三方用的python-social-auth weixin app backend刚提pr不知道作者什么时候合并,如果要用先-e安装我的分之的这个版本我的python-social-auth,分支master_origin

用户信息

django默认的User信息肯定是不够用的,按照以前开发的尿性,我们需要一个UserProfile做onetoone的关联,记录额外信息。myauth/models.py

配置

参考文档配置即可,可以参考我的配置。

注意配置中SOCIAL_AUTH_通用配置 | SOCIAL_AUTH_QQ_qq的配置的是因为这个地方源码 social/utils.py的代码来做到的。

所谓的正确姿势

关键就是这些pipeline,这是所谓的正确姿势。

SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    'social.pipeline.social_auth.social_user',
    'social.pipeline.user.get_username',
    'social.pipeline.user.create_user',
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details',
    'myauth.pipeline.user.save_profile',
)

源码的action.py,通过do_complete方法我们可以看到,微信在做pipeline的时候是backend.continue_pipeline是一直根据配置的pipeline往下调用的,文档讲解的很清楚(比当年好多了),pipeline会暂时中断这次auth,做一些你想做的事情(用户名转化,根据微信的unioid关联唯一用户等等),然后回来继续,然而我当年是从中间某个位置直接跳转出去就不从这继续了,好吧现在用了正确的姿势,例如额外信息存储myauth.pipeline.user.save_profile

所以我的这个项目其实是错误的示范,star的同学们对不起了。

过完pipeline之后微信会根据你settings.py中的各种跳转url根据不同的逻辑做跳转,你需要把其他的业务逻辑放在对应的view里面即可。

然后你加个next参数做跳转就可以实现微信app里面的登录的功能了。

© 著作权归作者所有

共有 人打赏支持
duoduo3_69
粉丝 90
博文 57
码字总数 83746
作品 0
青岛
程序员
微信公众号开发小记——3.接入三方登录

为什么要接入三方登录 如果你的微信服务器要做复杂的逻辑,比如html5、给用户提供高级的服务,并且有很好看的页面等等,这种时候你就需要一个正常的web服务器,用户打通就需要做三方登录了。...

D咄咄
2017/11/29
0
0
微信公众号开发小记——4.两种邀请用户的方式 扫码&&链接

描述 假设的我们的服务号有这么一些功能,比如底部有按钮,点击会有一些复杂的功能,这时候可能就需要一个用户系统,有用户系统就经常想要做什么分享邀请新用户之类的,这时候就又有几种方式...

D咄咄
2017/11/29
0
0
01第三方平台概述

第三方平台概述 一、概述 公众平台第三方平台是为了让公众号或小程序运营者,在面向垂直行业需求时,可以一键授权给第三方平台(并且可以同时授权给多家第三方),通过第三方平台来完成业务,...

MadDragon
03/12
0
0
微信公众号开发小记——1.接入微信服务器

描述 由于马上要做一波公众号开发,今天先调研,把基本的服务器接起来。微信公众号服务器在接入的时候要做一些烦躁的事情,改配置的时候要进行握手,api调用要做一些烦躁的加密解密检查,而且...

D咄咄
2017/11/29
0
0
大前端 Android 开发日记 10:微信分享

大前端 Android 开发日记 10:微信分享 Blog | Phodal Geek's Life2017-12-241 阅读 Android 与之前的微博分享相比,微信分享就没有那么容易了——微信官方的 SDK 太差劲了。文章也写得像一坨...

Blog | Phodal Geek's Life
2017/12/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

cmd中查询mysql表出现中文乱码

问题:在pycharm中正常的fetchall拉取数据,能够正常显示,而在cmd中直接select却出现中文乱码。 解决思路:右键查看cmd命令窗口属性得到,cmd窗口默认编码是gbk(如下图所示),而设置的mys...

fang_faye
15分钟前
1
0
centOS 安装Python3与python2并存

centOS 安装Python3与python2并存 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环...

MedivhXu
41分钟前
1
0
Spring JdbcTemplate模板模式与回调结合分析

在看Spring的JdbcTemplate的时候,看到其将模板模式和回调模式结合使用的实现,可以精妙的解决很多的问题。详见Spring中涉及的设计模式总结中的关于模板模式和回调模式结合的具分析,本文利用...

宸明
今天
1
0
docker update:更新一个或多个容器的配置

更新容器的配置 docker update:更新一个或多个容器的配置。 具体内容请访问:https://docs.docker.com/engine/reference/commandline/update/#options 语法:docker update [OPTIONS] CONTA...

lwenhao
今天
3
0
unload事件

unload事件不触发的原因分析 1.代码位置不对,应该优先加载,不能放到回调函数中 2.浏览器不支持 3.最可能的原因,unload事件中触发的函数是一个异步执行的函数,浏览器是不允许在窗口关闭之后在...

狮子狗
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部