Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Art und Weise, wie Django Social-Auth verwendet, um die QR-Code-Anmeldung auf WeChat-Websites von Drittanbietern zu implementieren

Einführung in die Art und Weise, wie Django Social-Auth verwendet, um die QR-Code-Anmeldung auf WeChat-Websites von Drittanbietern zu implementieren

高洛峰
高洛峰Original
2017-03-16 15:50:023790Durchsuche

Vorwort

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="http://www.php.cn/wiki/1514.html" target="_blank">Python</a> und <a href="http://www.php.cn/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结构

1. Python implementiert die WeChat-Website-Scancode-Anmeldung (Django)

2. Mit django -social-auth können Sie sich für chinesische Social-Networking-Sites (QQ, Weibo, Douban, Baidu, Renren, WeChat) anmelden.

Als mir die Anmeldung von QQ und Weibo klar wurde Die Verwendung von

, 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="http://www.php.cn/wiki/1048%20.html" target="_blank">end<code>UserSocialAuths gefunden social-auth, nicht Bedeutet das nicht, dass es WeChat unterstützen kann? social-back<a href="http://www.php.cn/wiki/1048.html" target="_blank">end</a>sWeixin.py

Hinweise

  • Antrag und Aktivierung erfordern die Einreichung zahlreicher Zertifizierungsinformationen und eine Gebühr von ¥

    300微信开放平台Jährliche Zertifizierungsgebühr; sie unterscheidet sich von offiziellen Konten, Dienstkonten usw. Adresse: http://open.weixin.qq.com

  • Nachdem Sie die Zertifizierung bestanden haben, achten Sie darauf,
  • auszufüllen und den Hauptdomänennamen einzugeben Sie können beispielsweise nicht

    und dergleichen schreiben, sondern nur 授权回调域 (kein Hinzufügen von http oder https erforderlich), andernfalls werden die nachfolgenden Ausgaben re<a href="http://www.php.cn%20/wiki/1275.html" target="_blank">dir<code>www.zzmxy.com/login/wechatect_uri-Parameterfehler!www.zzmxy.comre<a href="http://www.php.cn/wiki/1275.html" target="_blank">dir</a>ect_uri 参数错误

Praktisch Schritte

  1. Installation

    : 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-backendsWeixin.py

    pip install python-social-auth==0.2.12
  2. Konfiguration:

    social-auth

  • Konfiguration: Bitte beziehen Sie sich auf die zweite oben erwähnte Konfiguration des Schreibens von Artikeln:

    SOCIAL_AUTH_PIPELINE

  • Konfiguration von WeChat open Plattformanwendung

    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',
       )
  • APPIDFü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

    automatisch generierten QR-Code-Zugriffslink ein
    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:
  • Die oben genannten erforderlichen Parameter sind 5,

    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="http://www.php.cn/js/js-weixinapp-api.html" target="_blank">api<code>scope_login, in diesem Fall müssen wir diesen Parameterwert zum Quellcode von

    hinzufügen und die
    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 scopescope=sns<a href="http://www.php.cn/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.pyVirtualEnvFügen Sie im

    -Wörterbuch einfach einen
    /home/ubuntu/env/mppython/lib/python2.7/site-packages/social/backends/weixin.py
    -Parameter hinzu , und die Änderung ist wie folgt:

    def auth_params()

    Führen Sie das Projekt nach dem Ändern und Speichern erneut aus und besuchen Sie www.domain name.com/login/weixin erneut, um den Effekt zu sehen!
    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

    paramsscope

  • 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!

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn