文档章节

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

duoduo3_69
 duoduo3_69
发布于 2016/04/15 17:53
字数 826
阅读 196
收藏 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
2018/03/12
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
微信公众号开发小记——1.接入微信服务器

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

D咄咄
2017/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java并发编程基础(三)

线程间通信 线程间通信称为进程内通信,多个线程实现互斥访问共享资源时会互相发送信号货这等待信号,比如线程等待数据到来的通知,线程收到变量改变的信号。 线程阻塞(同步)和非阻塞(异步)...

chendom
6分钟前
1
0
阿里重磅开源首款自研科学计算引擎Mars,揭秘超大规模科学计算

日前,阿里巴巴正式对外发布了分布式科学计算引擎 Mars 的开源代码地址,开发者们可以在pypi上自主下载安装,或在Github上获取源代码并参与开发。 此前,早在2018年9月的杭州云栖大会上,阿里...

阿里云官方博客
16分钟前
1
0
我是怎样和Linux系统结缘并通过红帽RHCE认证的

我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#、C++之类的...

问题终结者
26分钟前
1
0
SSH之端口转发

第一部分 概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能带...

无语年华
31分钟前
1
0
我是怎样和Linux系统结缘并通过红帽RHCE认证的

我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#、C++之类的...

linuxprobe16
48分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部