Heim >Backend-Entwicklung >Python-Tutorial >Einführung in die Art und Weise, wie Django Social-Auth verwendet, um die QR-Code-Anmeldung auf WeChat-Websites von Drittanbietern zu implementieren
Als wir das Webunternehmen baten, eine neue offizielle Website zu erstellen, planten wir aufgrund der für einige umständlichen Anmeldeschritte eine 第三方账号
Anmeldefunktion Offene Plattformen zu dieser Zeit (insbesondere die offene WeChat-Plattform), daher habe ich gezögert und kann in letzter Zeit nur noch verwandte Funktionen selbst hinzufügen.
Da ich neu in <a href="//m.sbmmt.com/wiki/1514.html" target="_blank">Python</a>
und <a href="//m.sbmmt.com/wiki/1515.html" target="_blank">Django</a>
war, habe ich viele Videos und Materialien zum Lernen Üben gefunden und dann langsam usw. Verstanden, Baidu hat zwei sehr nützliche Artikel zum Thema Drittanbieter-Anmeldung gefunden und viel daraus gelernt: MVT结构
2. Mit django -social-auth können Sie sich für chinesische Social-Networking-Sites (QQ, Weibo, Douban, Baidu, Renren, WeChat) anmelden.
, um die Anmeldung von Drittanbietern zu erreichen, ist sehr einfach, bequem, direkt und perfekt. Ich habe jedoch noch nie herausgefunden, wie man social-auth
auf die gleiche Weise implementiert (im zweiten Artikel oben wurde es auch nicht erwähnt). ; aus dem Interpretationsdokument von 微信
war ich fassungslos, da die offizielle Website bereits über die entsprechende social-auth
Datentabelle und das User
Datenraster zum Speichern von Daten von Dritten verfügt Nachdem ich die erste Methode oben verwendet hatte, um sie zu implementieren, hatte ich Probleme mit dem Hinzufügen und Ändern der Benutzerdatentabelle. Ich möchte diese Struktur wirklich nicht zerstören, also wollte ich gerade wieder lernen, wie man Datenbanken speichert social-back<a href="//m.sbmmt.com/wiki/1048%20.html" target="_blank">end<code>UserSocialAuth
s gefunden social-auth
, nicht Bedeutet das nicht, dass es WeChat unterstützen kann? social-back<a href="//m.sbmmt.com/wiki/1048.html" target="_blank">end</a>s
Weixin.py
300微信开放平台
Jährliche Zertifizierungsgebühr; sie unterscheidet sich von offiziellen Konten, Dienstkonten usw. Adresse: http://open.weixin.qq.com
und dergleichen schreiben, sondern nur 授权回调域
(kein Hinzufügen von http oder https erforderlich), andernfalls werden die nachfolgenden Ausgaben re<a href="//m.sbmmt.com%20/wiki/1275.html" target="_blank">dir<code>www.zzmxy.com/login/wechat
ect_uri-Parameterfehler!www.zzmxy.com
re<a href="//m.sbmmt.com/wiki/1275.html" target="_blank">dir</a>ect_uri 参数错误
: Da die offizielle Website social-auth
verwendet, habe ich nach dem Herunterladen des Quellcodes festgestellt, dass dies der Fall ist auch
in python-social-auth==0.2.12
, was sich als verfügbar erweist; social-backends
Weixin.py
pip install python-social-auth==0.2.12
social-auth
SOCIAL_AUTH_PIPELINE
und 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', )
APPID
Führen Sie nach der Konfiguration Ihre Website aus und verwenden Sie www.domain name.com/login/weixin, um auf die entsprechenden zuzugreifen Seite, aber gibt es einen Fehler? Ich habe einen Fehler gefunden: SECRET
Während des eigentlichen Vorgangs habe ich festgestellt, dass dem von
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-Parameter fehlte und der QR-Code-Zugriffslink offiziell bereitgestellt wurde von WeChat war so:
kann weggelassen werden, aber Scope参数错误或没有Scope权限
ist erforderlich, und für den autorisierten Zugriff auf Webseiten ist der social-auth
-Bereich erforderlich Parameter ist ein fester Wert scope=sns<a href="//m.sbmmt.com/js/js-weixinapp-api.html" target="_blank">api<code>scope
_login, in diesem Fall müssen wir diesen Parameterwert zum Quellcode von
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect-Datei basierend auf Ihrem tatsächlichen
-Installationspfad finden. Beispielsweise lautet der Pfad, den ich mit state
erstellt habe : scope
scope
scope=sns<a href="//m.sbmmt.com/js/js-weixinapp-api.html" target="_blank">api</a>_login
Öffnen Sie diese Datei und suchen Sie den Inhalt von social-auth
darin (Originaltext): site-packages
/social/backends/weixin.py
VirtualEnv
Fügen Sie im
/home/ubuntu/env/mppython/lib/python2.7/site-packages/social/backends/weixin.py-Parameter hinzu , und die Änderung ist wie folgt:
def auth_params()
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
params
scope
Das obige ist der detaillierte Inhalt vonEinführung in die Art und Weise, wie Django Social-Auth verwendet, um die QR-Code-Anmeldung auf WeChat-Websites von Drittanbietern zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!