1. Schauen wir uns zunächst die Wirkung an Von der Schnittstellenanforderung zurückgegebene Daten: 2. Offizielles Login-Flussdiagramm 3. Anmeldevorgang für das Mini-Programm: 1. Das Applet ruft wx.login auf 2. Bestimmen Sie, ob der Benutzer autorisiert ist 3. Zugriff auf wx.getUserInfo über das Applet 4. Miniprogramm-JS-Code: wx.login({ Erfolg: resp => { // Sende res.code an das Backend im Austausch gegen openId, sessionKey, unionId konsole.log(resp); var das = dies; // Benutzerinformationen abrufen wx.getSetting({ Erfolg: res => { wenn (res.authSetting['scope.userInfo']) { // Bereits autorisiert, können Sie getUserInfo direkt aufrufen, um den Avatar-Spitznamen ohne Popup-Fenster abzurufen wx.getUserInfo({ Erfolg: userResult => { var platUserInfoMap = {} platUserInfoMap["verschlüsselteDaten"] = userResult.verschlüsselteDaten; platUserInfoMap["iv"] = BenutzerResult.iv; wx.Anfrage({ URL: „http://127.0.0.1:5000/user/wxlogin“, Daten: { platCode: bzw. Code, platUserInfoMap: platUserInfoMap, }, Kopfzeile: { "Inhaltstyp": "Anwendung/json" }, Methode: 'POST', Datentyp: „json“, Erfolg: Funktion (res) { Konsole.log(res) wx.setStorageSync("userinfo", res.userinfo) //Lokalen Cache festlegen }, fail: function (err) { }, // Anforderung fehlgeschlagen complete: function () { } // Funktion, die ausgeführt wird, nachdem die Anforderung abgeschlossen ist }) } }) } } }) } }) 5. Der Backend-Server greift auf code2session zu und erhält über die API-Schnittstelle code2Session den Login 6. Der Backend-Server überprüft die Benutzerinformationen und entschlüsselt { "openId": "ÖFFNEN", "nickName": "SPITZNAME", "gender": GESCHLECHT, "Stadt": "STADT", "province": "PROVINZ", "country": "LAND", "avatarUrl": "AVATARURL", "unionId": "UNIONID", "Wasserzeichen": { "appid": "APPID", "Zeitstempel":ZEITSTEMPEL } } 7. Erstellen Sie eine neue Entschlüsselungsdatei - WXBizDataCrypt.py
Base64 importieren JSON importieren von Crypto.Cipher importiere AES Klasse WXBizDataCrypt: def __init__(selbst, Anwendungs-ID, Sitzungsschlüssel): self.appId = Anwendungs-ID self.sessionKey = Sitzungsschlüssel def entschlüsseln(selbst, verschlüsselte Daten, iv): # Base64-Dekodierung Sitzungsschlüssel = base64.b64decode(self.sessionKey) verschlüsselteDaten = base64.b64decode(verschlüsselteDaten) iv = base64.b64decode(iv) Chiffre = AES.neu(Sitzungsschlüssel, AES.MODE_CBC, iv) entschlüsselt = json.loads(self._unpad(cipher.decrypt(encryptedData))) wenn entschlüsselt['Wasserzeichen']['App-ID'] != self.appId: Ausnahme auslösen('Ungültiger Puffer') entschlüsselt zurückgeben def _unpad(selbst, s): return s[:-ord(s[Länge(s)-1:])] 8. Flasks JSON importieren, Anfragen von WXBizDataCrypt importiere WXBizDataCrypt aus Flasche importieren Flasche @app.route('/user/wxlogin', Methoden=['GET','POST']) def user_wxlogin(): data = json.loads(request.get_data().decode('utf-8')) # Konvertiert die Front-End-JSON-Daten in ein Wörterbuch appID = 'appID' # Die App-ID des Entwicklers für das WeChat-Applet appSecret = 'appSecret' # AppSecret des Entwicklers für das WeChat Mini-Programm Code = Daten ['PlatCode'] # Temporärer WeChat-Anmeldecode, der vom Frontend POST gesendet wurde verschlüsselteDaten = Daten['platUserInfoMap']['verschlüsselteDaten'] iv = Daten['platUserInfoMap']['iv'] req_params = { 'appid': App-ID, 'Geheimnis': App-Geheimnis, 'js_code': Code, „Grant_Type“: „Autorisierungscode“ } wx_login_api = 'https://api.weixin.qq.com/sns/jscode2session' response_data = requests.get(wx_login_api, params=req_params) # Initiieren Sie eine GET-Anfrage an die API resData = response_data.json() openid = resData ['openid'] # Ruft die OpenID des Benutzers für das aktuelle Applet ab session_key = resData ['session_key'] # Holt den Sitzungsschlüssel des Benutzers session_key für das aktuelle Applet pc = WXBizDataCrypt(appID, session_key) #Benutzerinformationen entschlüsseln userinfo = pc.decrypt(encryptedData, iv) #Benutzerinformationen abrufen print(userinfo) ''' Der folgende Teil bestimmt, ob ein benutzerdefinierter Anmeldestatus hinzugefügt oder zurückgegeben werden soll, indem beurteilt wird, ob der Benutzer in der Datenbank vorhanden ist (wenn der Benutzer nicht vorhanden ist, fügen Sie ihn hinzu; wenn der Benutzer vorhanden ist, geben Sie die Benutzerinformationen zurück). --------leicht leicht leicht leicht leicht leicht leicht leicht leicht leicht------------- Ich werde diesen Teil überspringen und die Benutzer in der Datenbank bearbeiten''' json.dumps zurückgeben ({ "Code": 200, "Nachricht": "Anmeldung erfolgreich", "Benutzerinfo": Benutzerinfo}, Einzug = 4, Sortierschlüssel = True, Standard = str, Sicherstellen_Ascii = False) Zusammenfassen Dies ist das Ende dieses Artikels über die Anmeldedaten des Python Flask WeChat-Applets und die Implementierung der Anmelde-API. Weitere verwandte Inhalte zu den Anmeldedaten des Python Flask WeChat-Applets und der Implementierung der Anmelde-API finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Vue implementiert die Anzeige und Ausblendung der dreistufigen Navigation
>>: mysql: [FEHLER] unbekannte Option '--skip-grant-tables'
yum-Befehl Yum (vollständiger Name Yellow Dog Upd...
Die Implementierung des Erweiterns und Reduzieren...
Ein nahtloses Karussell ist ein sehr häufiger Eff...
Letztes Mal haben wir über einige SQL-Abfrageopti...
Inhaltsverzeichnis Vorne geschrieben 1. Ngixn-Bil...
1. Installation der dekomprimierten Version (1). ...
Offizielle Docker Hub-Website 1. Suchen Sie nach ...
Dockerfile initialisieren Angenommen, unser Proje...
Vorwort: Manchmal wird die mit MySQL verbundene S...
Löschprozedur sp_name/ Zuvor habe ich Ihnen die G...
Dieser Artikel stellt die Blue-Green-Bereitstellu...
Weitere spannende Inhalte finden Sie unter https:...
Viele Webdesigner sind beim Entwurf des Webseitenl...
Inhaltsverzeichnis 1. Inline-Stile 2. Importmetho...
Indem ich die verschiedenen Probleme, auf die ich...