问题python
使用social_core过程当中,存储的username一直都是一串字符串,而并不是是微信的username, 后来仔细研究一下才明白,username就至关于id,属于惟一字符串,因此也就不是直接将微信 的昵称copy过来座位username,那么就只能使用其余字段来记录微信昵称。 #就这点东西研究了三个小时,我也是醉醉的,看别人的代码真是很难, #要看懂功能、逻辑、调用关系、哪里入库、那里拦截 这里使用的是nickname。 下图中,第一条是没有加nickname以前,username我修改过,否则就仍是一串字符串 第二条的nickname已经经过微信加载进来了
解决方案:
social_core、social_django 源码只获取useranme一个字段,因此这里要添加一下git
方案1:失败的,应该是数据的结构问题,没有太多时间去处理,看到失败,就没有继续下去github
修改 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:测试成功django
# 固然我知道这样直接改源码的方式不太好可是暂时能够用了,后续再看怎么改一下吧 修改 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...微信