资讯专栏INFORMATION COLUMN

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

aisuhua / 1618人阅读

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

为什么要接入三方登录

如果你的微信服务器要做复杂的逻辑,比如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里面的登录的功能了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45420.html

相关文章

  • 微信公众开发小记——4.两种邀请用户的方式 扫码&&链接

    摘要:借着这个需求体会了下微信开发的两种不同类型非端口的两种开发,以及的一些正确姿势。关于用户微信登录的事情我们通过已经解决了参考我的上一篇博客微信公众号开发小记接入三方登录,所以可以直接用的装饰器完成这种事情。 描述 假设的我们的服务号有这么一些功能,比如底部有按钮,点击会有一些复杂的功能,这时候可能就需要一个用户系统,有用户系统就经常想要做什么分享邀请新用户之类的,这时候就又有几种方式,...

    BDEEFE 评论0 收藏0
  • 微信公众开发小记——1.接入微信服务器

    摘要:描述由于马上要做一波公众号开发,今天先调研,把基本的服务器接起来。手脚架地址文档微信公众号公众号开发首先你要有个公众号,这里就不说了按照流程申请。脚手架的说明微信公众号接入的时候要做很多事情,为了简化开发,提供一个版本的服务器。 描述 由于马上要做一波公众号开发,今天先调研,把基本的服务器接起来。微信公众号服务器在接入的时候要做一些烦躁的事情,改配置的时候要进行握手,api调用要做一些...

    sshe 评论0 收藏0
  • 微信公众开发小记——2.80端口上的服务

    摘要:微信在做一些操作是需要用到生成二维码等而每天接口的调用上限为,需要自己做缓存文档讲了几种方式,我觉得放在中拿比较妥当。微信菜单会缓存分钟,你可以取消关注,然后在关注查看菜单变化效果。 描述 微信公众号开发基本分为2大种类型 1.用户直接做了某些操作(回复信息、订阅、扫码、发语音、点按钮等),此时这些信息微信会发送到微信服务器的80端口,这是一种开发类型;2.通过连接(按钮、文章)引导用...

    frank_fun 评论0 收藏0
  • 微信三方登录接口开发

    摘要:相关资料博客微信第三方登录接口开发端微信扫码登录文档移动端网页微信公众平台授权登录微信开放平台登录与微信公众平台授权登录区别在哪微信登录接口几个问题微信登录的和区别百分号编码在线转换第三方登录 微信登录接口开发须知 APP登录接口 PC网站登录接口 微信移动网页登录接口(又称微信公众号授权登录) 移动端非微信自带浏览不支持微信登录 微信移动网页登录接口(又称微信公众号授权登录) ...

    ziwenxie 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<