资讯专栏INFORMATION COLUMN

social_core 第三方登录“微信”不存储nickname的解决方案

felix0913 / 3272人阅读

摘要:就这点东西研究了三个小时,我也是醉醉的,看别人的代码真是很难,要看懂功能逻辑调用关系哪里入库那里拦截这里使用的是。方案测试成功当然我知道这样直接改源码的方式不太好但是暂时可以用了,后续再看怎么改一下吧修改在下方添加如下代码

问题

使用social_core过程中,存储的username一直都是一串字符串,而并非是微信的username,
后来仔细研究一下才明白,username就相当于id,属于唯一字符串,所以也就不是直接将微信
的昵称copy过来座位username,那么就只能使用其他字段来记录微信昵称。

#就这点东西研究了三个小时,我也是醉醉的,看别人的代码真是很难,
#要看懂功能、逻辑、调用关系、哪里入库、那里拦截

这里使用的是nickname。
下图中,第一条是没有加nickname之前,username我修改过,不然就还是一串字符串
       第二条的nickname已经通过微信加载进来了

解决方案:
social_core、social_django 源码只获取useranme一个字段,所以这里要添加一下

方案1:失败的,应该是数据的结构问题,没有太多时间去处理,看到失败,就没有继续下去

修改 social_core/pipeline/user.py 顶部的 USER_FIELDS
   原:USER_FIELDS = ["username", "email"]
   修改后:USER_FIELDS = ["username", "email", "nikename"]
由于最后出现的数据结构类似于
    {"username":"830912830192","response":{"nickname":"小喵喵"}}
    nickname和username根本就不在同一级别。 # user.py  create_user  fields

方案2:测试成功

# 当然我知道这样直接改源码的方式不太好但是暂时可以用了,后续再看怎么改一下吧
修改 social_core/pipeline/user.py create_user
    在fields下方添加如下代码
        #add by shen 2017-11-15 03:18:29
        nick_dict =  kwargs.get("response")
        fields["nick_name"] = nick_dict.get("nickname",None)

social_core github:https://github.com/python-soc...

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

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

相关文章

  • Django中使用三方登录

    摘要:使用微博进行第三方登录进入微博开放平台申请应用。根据微博的接口写的微博登录的一个第一步生成一个网页地址,访问后是微博第三方登录的页面,登录会返回一个授权码必填申请应用时分配的。 OAuth2.0是什么  OAuth的英文全称是Open Authorization,它是一种开放授权协议。OAuth目前共有2个版本,2007年12月的1.0版(之后有一个修正版1.0a)和2010年4月的2...

    shadowbook 评论0 收藏0
  • 微信小程序开发:python+sanic 实现小程序登录注册

    摘要:参考链接微信小程序七日谈第五天你可能要在登录功能上花费大力气理解认证及实践网站微信登录实现最后,感谢女朋友支持。 开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步。这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案。 微信小程序登录时序图如下: showImg(https://segmentfaul...

    antz 评论0 收藏0
  • 微信小程序开发:python+sanic 实现小程序登录注册

    摘要:参考链接微信小程序七日谈第五天你可能要在登录功能上花费大力气理解认证及实践网站微信登录实现最后,感谢女朋友支持。 开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步。这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案。 微信小程序登录时序图如下: showImg(https://segmentfaul...

    Nino 评论0 收藏0
  • python实现微信三方网站扫码登录(Django)

    摘要:写在前面本周刚在项目中实现了微信第三方网站扫码登录。准备与注意事项微信公众平台跟微信开放平台是两个不同的平台,别搞混了。参数在微信开放平台中查看。 写在前面 本周刚在项目中实现了微信第三方网站扫码登录。因为第一次写相关项目,所以遇到了很多坑。所以写这篇文章是希望像我之前那样的小白也能从容的开发,不要浪费无谓的时间,这篇文章尽量写的详细简单。准备与注意事项 微信公众平台跟微信开放平台是...

    lemanli 评论0 收藏0
  • 慕课网_《微信授权登录》学习总结

    摘要:时间年月日星期六说明本文部分内容均来自慕课网。第六章公众号与开发平台关联公众号与开放平台关联情景说明当使用端进行微信授权登录时,得到的和公众号授权登录时得到的不一样。 时间:2017年08月12日星期六说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:无学习源码:https://github.com/zccodere/s... 第一章:课程介绍...

    coordinate35 评论0 收藏0

发表评论

0条评论

felix0913

|高级讲师

TA的文章

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