Maison >développement back-end >Tutoriel Python >Introduction à la façon dont Django utilise Social-Auth pour implémenter la connexion par code QR sur les sites Web tiers WeChat
Lorsque nous avons demandé à la société Web de créer un nouveau site officiel, nous avions prévu d'avoir une 第三方账号
fonction de connexion. Cependant, en raison des étapes de candidature fastidieuses pour certains. plates-formes ouvertes à cette époque (en particulier la plate-forme ouverte WeChat), j'ai donc tergiversé et récemment, je ne peux ajouter que des fonctions associées moi-même.
Depuis que j'étais nouveau sur <a href="//m.sbmmt.com/wiki/1514.html" target="_blank">Python</a>
et <a href="//m.sbmmt.com/wiki/1515.html" target="_blank">Django</a>
, j'ai trouvé beaucoup de vidéos et de matériel pour étudier pratiquer, puis j'ai lentement maîtrisé MVT结构
et ainsi de suite. J'ai compris, Baidu a trouvé deux articles très utiles sur la connexion par des tiers et en a beaucoup appris :
1 Python implémente la connexion par code d'analyse de sites Web tiers (Django) 2. Utilisez django -social-auth pour la connexion à trois sur les sites de réseaux sociaux chinois (QQ, Weibo, Douban, Baidu, Renren, WeChat)
Connexion tierce est très simple, pratique, directe et parfaite. Cependant, je n'ai jamais trouvé comment implémenter social-auth
de la même manière (le deuxième article ci-dessus ne l'a pas non plus mentionné d'après l'interprétation) ; document de 微信
, j'ai été abasourdi. Le contenu de Weixin n'a pas été trouvé. Puisque le site officiel dispose déjà du tableau de données social-auth
correspondant et de la grille de données User
pour le stockage des tiers, il est très standardisé. la première méthode ci-dessus pour l'implémenter, j'ai eu du mal à ajouter et à modifier la table de données utilisateur, je ne veux vraiment pas détruire cette structure, alors juste au moment où je voulais réapprendre à stocker des bases de données, j'ai trouvé social-back<a href="//m.sbmmt.com/wiki/1048%20.html" target="_blank">end<code>UserSocialAuth
s trouvé social-auth
, ça ne veut pas dire ça peut-il prendre en charge WeChat ? social-back<a href="//m.sbmmt.com/wiki/1048.html" target="_blank">end</a>s
Weixin.py
300微信开放平台
Frais de certification annuels différents des comptes officiels, comptes de service, etc. Adresse : http://open.weixin.qq.com
et autres, il vous suffit d'écrire 授权回调域
(pas besoin d'ajouter http ou https), sinon les numéros suivants seront re<a href="//m.sbmmt.com%20/wiki/1275.html" target="_blank">dir<code>www.zzmxy.com/login/wechat
erreur de paramètre ect_uri!www.zzmxy.com
re<a href="//m.sbmmt.com/wiki/1275.html" target="_blank">dir</a>ect_uri 参数错误
: Puisque le site officiel utilise social-auth
, après avoir téléchargé le code source, j'ai découvert qu'il y avait également
dans python-social-auth==0.2.12
, ce qui s'avère Disponible social-backends
Weixin.py
pip install python-social-auth==0.2.12
social-auth
SOCIAL_AUTH_PIPELINE
AUTHENTICATION_BACKENDS
AUTHENTICATION_BACKENDS = ( 'social.backends.weibo.WeiboOAuth2', #微博的功能 'social.backends.qq.QQOAuth2', #QQ的功能 'social.backends.weixin.WeixinOAuth2', #这个是导入微信的功能 'oscar.apps.customer.auth_backends.EmailBackend', 'django.contrib.auth.backends.ModelBackend', )Configuration de WeChat ouvert ; application de plateforme
APPID
SECRET
SOCIAL_AUTH_WEIBO_KEY = '53*****29' SOCIAL_AUTH_WEIBO_SECRET = '272152************81a8b3' SOCIAL_AUTH_QQ_KEY = '10*****51' SOCIAL_AUTH_QQ_SECRET = '5807************d15bd97' SOCIAL_AUTH_WEIXIN_KEY = 'wx4fb***********599' #开放平台应用的APPID SOCIAL_AUTH_WEIXIN_SECRET = 'f1c17************08c0489' #开放平台应用的SECRET
, et le lien d'accès au code QR est officiellement fourni. par WeChat était comme ceci de : Scope参数错误或没有Scope权限
social-auth
scope
Les paramètres requis ci-dessus sont 5,
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirectest requis, et pour l'accès autorisé aux pages Web, la portée
le paramètre est une valeur fixe scope=sns<a href="//m.sbmmt.com/js/js-weixinapp-api.html" target="_blank">api<code>state
_login, dans ce cas, nous devons ajouter cette valeur de paramètre au code source de scope
et trouver le fichier scope
en fonction de votre chemin d'installation scope=sns<a href="//m.sbmmt.com/js/js-weixinapp-api.html" target="_blank">api</a>_login
réel. Par exemple, le chemin que j'ai créé en utilisant social-auth
est. : site-packages
/social/backends/weixin.py
VirtualEnv
Ouvrez ce fichier et retrouvez le contenu de
/home/ubuntu/env/mppython/lib/python2.7/site-packages/social/backends/weixin.py
def auth_params()
Dans le dictionnaire
def auth_params(self, state=None): appid, secret = self.get_key_and_secret() params = { 'appid': appid, 'redirect_uri': self.get_redirect_uri(state), } if self.STATE_PARAMETER and state: params['state'] = state if self.RESPONSE_TYPE: params['response_type'] = self.RESPONSE_TYPE return params, et la modification est la suivante :
params
scope
Après la modification et l'enregistrement, réexécutez le projet et visitez à nouveau www.domain name.com/login/weixin pour voir l'effet !
def auth_params(self, state=None): appid, secret = self.get_key_and_secret() params = { 'appid': appid, 'redirect_uri': self.get_redirect_uri(state), 'scope': 'snsapi_login', } if self.STATE_PARAMETER and state: params['state'] = state if self.RESPONSE_TYPE: params['response_type'] = self.RESPONSE_TYPE return params
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!