問題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...微信