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'
Schreibmethode 1: sas_order_supply_month_pay-Satz...
Verwendung von Anker-Tags: Als Ankerlink wird ein ...
Was ist ein Port? Bei den Ports, auf die wir uns ...
Vorwort: Verwenden Sie den Wasserzeicheneffekt im...
CocosCreator-Version: 2.3.4 Die meisten Spiele ve...
Vorwort Standardmäßig initialisiert MySQL einen g...
Inhaltsverzeichnis Beispiel Methode 1: Löschen Me...
Build deaktivieren Partitionsausdrücke unterstütz...
1. Konstruktion 1. Bereiten Sie die Datei htpassw...
Schritt 1: Umgebungsvariablen konfigurieren (mein...
Inhaltsverzeichnis 1. DateTimePicker Datumsauswah...
Einführung Wenn wir über Verteilung sprechen, müs...
Heute werden wir darüber sprechen, wie wir Jenkin...
In diesem Artikel gibt es keine Spitzfindigkeiten,...
Inhaltsverzeichnis 1. Testumgebung 1.1 Hardware u...