若是你的微信服務器要作複雜的邏輯,好比html五、給用戶提供高級的服務,而且有很好看的頁面等等,這種時候你就須要一個正常的web服務器,用戶打通就須要作三方登陸了。html
而若是你決定直接用weixin_server作web服務器徹底沒有問題,80端口給微信留着,剩下的你能夠按照一個正常的django項目開發,前端能夠接入weixin sdk。前端
我接觸python-social-auth已經好久了,其中微信的backend就是我貢獻的代碼,然而當時作的時候比較年輕,並且這個項目處於一個很大的代碼重構中,藉此次機會從新用正確的姿式接入了一下三方登陸,能夠當作一個學習接入三方的demo。順便提了weixin app登陸的backend的一個pr。html5
若是你想用這個weixin_server項目接入三方登陸,能夠參考feature/myauth分支,三方用的python-social-auth weixin app backend剛提pr不知道做者何時合併,若是要用先-e安裝個人分之的這個版本個人python-social-auth,分支master_originpython
django默認的User信息確定是不夠用的,按照之前開發的尿性,咱們須要一個UserProfile作onetoone的關聯,記錄額外信息。myauth/models.pygit
參考文檔配置便可,能夠參考個人配置。github
注意配置中SOCIAL_AUTH_通用配置
| SOCIAL_AUTH_QQ_qq的配置
的是由於這個地方源碼 social/utils.py的代碼來作到的。web
關鍵就是這些pipeline,這是所謂的正確姿式。django
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裏面的登陸的功能了。