VorwortWenn das WeChat-Miniprogrammprojekt das Abrufen von Benutzerinformationen und die Implementierung der Benutzeranmeldung umfasst, können Sie die WeChat-Benutzeridentität problemlos über die von WeChat offiziell bereitgestellte Anmeldefunktion abrufen und schnell ein Benutzersystem innerhalb des Miniprogramms einrichten. Das offizielle Dokument enthält nur Informationen zum Aufrufen der autorisierten Anmeldung. Wenn Sie das Dokument einfach so kopieren, um den Code zu schreiben, führt dies zwangsläufig zu einer schlechten Wartbarkeit des Codes. Daher konzentriert sich dieser Artikel darauf, wie die autorisierte Anmeldung des WeChat-Applets eleganter gehandhabt werden kann. Grundsätzlicher Ablauf der autorisierten AnmeldungDas obige Bild ist das grundlegende Flussdiagramm der autorisierten Anmeldung, das von der offiziellen Website des WeChat Mini-Programms bereitgestellt wird. Hier werde ich den Prozess nur aus der Perspektive der Front-End-Entwicklung erklären.
Nachdem Sie den allgemeinen Anmeldevorgang verstanden haben, können Sie mit dem Schreiben von Code beginnen. Da die von WeChat bereitgestellten API-Schnittstellenaufrufe der Codewartung nicht förderlich sind, habe ich Promise verwendet, um den Prozess zu kapseln (wenn Sie es nicht verstehen, finden Sie eine ausführliche Einführung im ES6-Dokument). Dies hat den Vorteil, dass Sie die Schnittstellenaufrufe in Zukunft verketten und auch async/await (ES6-Syntax) kombinieren können, um die asynchrone Schnittstelle zu synchronisieren. Kapselung von Get/Post-SchnittstellenErstellen Sie im Stammverzeichnis einen Serviceordner, um den Code für die Schnittstelle zu speichern. Erstellen Sie im Serviceordner eine Datei myRequest.js und kapseln Sie die Get/Post-Anforderung des Applets ein. Der Code lautet wie folgt: // Anforderungskapselung abrufen (Seitenbeurteilung überspringen) //Globale Variablen können über die globale Funktion getApp abgerufen werden. Globale Daten können in app.js im Stammverzeichnis festgelegt werden. let app=getApp(); const myGet = (URL, Daten)=>{ returniere neues Promise((lösen, ablehnen)=>{ wx.Anfrage({ URL: `${app.globalData.HTTP}${url}`, Daten:Daten, Methode:"GET", //Diese Autorisierung ist der Wert, der die OpenID- und Session_Key-Informationen enthält header: { 'authorization': app.globalData.authorization}, //Holen Sie sich die Benutzerinformationen aus der globalen Variable und fügen Sie sie in den Anforderungsheader ein success:(res)=>{ wenn (res.data.code == 409) { //409 bedeutet, dass der Benutzer nicht angemeldet ist, daher wird er gezwungen, zur schriftlichen Anmeldeseite zu springen wx.navigateTo({ URL: „../login/login“ }) } anders{ auflösen(res.data); } }, Fehler: (Res) => { ablehnen(); } }) }) } // Kapselung der Post-Anforderung (Beurteilung der Sprungseite) const myPost = (URL, Daten) => { returniere neues Promise((lösen, ablehnen) => { wx.Anfrage({ URL: `${app.globalData.HTTP}${url}`, Daten: Daten, Methode: "POST", Header: { 'Autorisierung': app.globalData.authorization}, Erfolg: (res) => { wenn (res.data.code == 409){ wx.navigateTo({ URL: „../login/login“ }) }anders{ auflösen(res.data); } }, fehlgeschlagen: (res) => { ablehnen(); } }) }) } modul.exporte = { meinGet, meinPost, } Der Code für die globale Variablenkonfiguration von app.js lautet wie folgt (beachten Sie, dass die Daten der globalen Variablen nach dem Aktualisieren der Seite oder dem erneuten Aufrufen des Miniprogramms initialisiert werden und der aktuelle Datenstatus nicht dauerhaft gespeichert werden kann): //app.js App({ beim Starten: Funktion() { //Hier können Sie Code schreiben, der entsprechend den tatsächlichen Anforderungen des Projekts zur Projektinitialisierung ausgeführt werden muss}, globalData: { HTTP: "https://shop.yamecent.com/", //Nachdem wir die OpenID und den Sitzungsschlüssel erhalten haben, speichern wir sie in der Autorisierung des Applet-Speichers, sodass die Daten nicht verloren gehen, es sei denn, die Applet-Autorisierung wird gelöscht: wx.getStorageSync('authorization') || "", //Holen Sie sich die im Applet-Speicher gespeicherte Autorisierung } }) Kapselung der Autorisierungs-AnmeldeschnittstelleDieser Teil der Kapselung verwendet async/await, um die asynchrone Schnittstelle synchron zu verarbeiten. Wenn Sie es nicht verstehen, können Sie die Beschreibung im ES6-Dokument nachschlagen. Erstellen Sie login.js im Serviceordner. Der Code lautet wie folgt: const myRequest = require('./myRequest.js'); const app = getApp(); const HTTP = app.globalData.HTTP; //WeChat-Anmeldeschnittstelle zum Abrufen der Codekapselung const myLogin=()=>{ returniere neues Promise((lösen, ablehnen)=>{ wx.login({ Erfolg:(res)=>{ auflösen(res.code); }, Fehler: (Res) => { ablehnen(res.errMsg); console.log("WeChat-Anmeldung und Codeabruf fehlgeschlagen"); } }) }) } //OpenID und Session_Key-Schnittstellenkapselung abrufen const getUserMsg=(myUrl,myData)=>{ returniere neues Promise((lösen,ablehnen)=>{ wx.Anfrage({ URL: meineURL, Methode: "POST", Daten: meineDaten, Erfolg:(res)=>{ wenn(res.data.code==500){ //Abrufen fehlgeschlagen wx.showToast({ Titel: res.data.msg, Symbol: „keine“, Dauer: 2000, Maske:wahr, }) resolve(500); //Bei Fehlschlag 500 zurückgeben }anders{ auflösen(res.data.data); } }, Fehler: (Res) => { ablehnen(res.data.msg); console.log("OpenID- und Session_Key-Schnittstellen konnten nicht abgerufen werden"); } }) }) } //Speicher kapseln (Hinweis: Der Speichervorgang ist hier asynchron) const mySetStorage=(Schlüssel,Wert)=>{ returniere neues Promise((lösen, ablehnen) => { wx.setStorage({ Schlüssel: Schlüssel, Daten: Wert, Erfolg: () => { Entschlossenheit (wahr); }, fehlgeschlagen: () => { ablehnen (falsch); } }) }) } //Speicher kapseln const myGetStorage=(key)=>{ returniere neues Promise((lösen,ablehnen)=>{ wx.getStorage({ Schlüssel: 'Schlüssel', Erfolg: (res)=>{ auflösen(res.data); }, Fehler:()=>{ reject("Speicher konnte nicht abgerufen werden"); } }) }) } //Kapselung der Autorisierungsmethode //sendData sind die Benutzerinformationen, die über die Autorisierungsschaltfläche erhalten wurden. Hier werden sie als Parameter an den Hintergrund übergeben, um die Benutzerinformationen zu speichern //cb ist die Funktion, die nach erfolgreicher Autorisierungsanmeldung ausgeführt werden soll. Die spezifische Funktion hängt von den Projektanforderungen ab und ist möglicherweise nicht erforderlich const myAuthorize = (sendData,cb="") => { asynchrone Funktion akkreditieren() { wx.showLoading({ Titel: „Zertifizierung in Bearbeitung“, Maske: wahr }) let code = await myLogin(); //WeChat-Login, um Code-Schnittstelle zu erhalten sendData.code=code; let author = await getUserMsg(`${HTTP}auth`, sendData); //Holen Sie sich die OpenID-Sitzungsschlüsselschnittstelle im Hintergrund wx.hideLoading(); wenn(Autor==500){ zurückkehren; } warte auf mySetStorage("authorization", author.Authorization); //Im Speicher speichern, das Applet aufrufen, um es abzurufen und in app.globalData zu speichern app.globalData.authorization = author.Authorization; typeof cb == "function" && cb(author); //Für den Rückruf benötigte Anmeldestatusparameter //Hier kann weitere Geschäftslogik hinzugefügt werden, wie etwa die Anzahl der Einkaufswagen von Tabbar-Benutzern usw. wx.showToast({ Titel: 'Erfolgreiche Autorisierung', Symbol: „Erfolg“, Dauer: 2000, Maske: wahr }); } akkreditieren(); } modul.exporte = { myAuthorize, meinSetStorage, myGetStorage } Nachdem die Autorisierungsanmeldung verpackt wurde, sehen wir uns an, wie sie im Projekt verwendet wird. Da die Autorisierung des WeChat-Applets nur durch eine Schaltfläche ausgelöst werden kann, verwenden Sie die Schaltflächenkomponente und geben Sie den offenen Typ als getUserInfo-Typ an, um die grundlegenden Informationen des Benutzers abzurufen. Der login.wxml-Code lautet wie folgt: <button class='btn' open-type="getUserInfo" bindgetuserinfo='gotoLogin'>Jetzt anmelden</button> Der login.js-Code lautet wie folgt: // Seiten/Login/Login.js const myRequest = require('../../common/script/myRequest.js'); const login = erfordern('../../common/script/login.js'); const app = getApp(); const HTTP = app.globalData.HTTP; Seite({ /** * Ausgangsdaten der Seite */ Daten: { }, gotoLogin: Funktion (e) { let sendOjb={};//Wird zum Speichern von Benutzerinformationen verwendetif (e.detail.errMsg == "getUserInfo:ok"){ sendOjb = { avatar: e.detail.userInfo.avatarUrl, Spitzname: e.detail.userInfo.nickName, Geschlecht: e.detail.userInfo.gender, Provinz: e.detail.userInfo.province, Stadt: e.detail.userInfo.city}; login.myAuthorize(sendOjb,()=>{ wx.navigateBack(); //Nach erfolgreichem Abschluss zur vorherigen Seite zurückkehren oder eine andere Logik entsprechend den Projektanforderungen schreiben}) }anders{ } }, /** * Lebenszyklusfunktion - auf Seitenladen warten*/ onLoad: Funktion (Optionen) { }, }) AbschlussDer obige Code kann kopiert und in Ihr eigenes WeChat-Applet-Projekt eingefügt werden und wird normal ausgeführt. Wenn es Fehler oder Bereiche gibt, die verbessert werden müssen, kontaktieren Sie mich bitte und ich werde sie rechtzeitig korrigieren. Damit ist dieser Artikel über die elegante Handhabung der autorisierten Anmeldung beim WeChat Mini-Programm abgeschlossen. Weitere relevante Inhalte zur autorisierten Anmeldung beim WeChat Mini-Programm finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Grafisches Tutorial zur Installation von MySQL 5.5 unter Win7
>>: So stellen Sie Node.js mit Docker bereit
In JavaScript können drei Arten von Meldungsfelde...
RPM-Paketverwaltung Ein Verpackungs- und Installa...
Inhaltsverzeichnis Code-Optimierung Verwenden der...
1. CSS-Elemente verbergen <br />In CSS gibt ...
In einigen Szenarien müssen wir unsere Felder vom...
Details zur Sicherheitsanfälligkeit VSFTP ist ein...
Dieser Artikel gibt Ihnen den spezifischen Code v...
Vue-Router-Übergänge sind eine schnelle und einfa...
Vor Kurzem hat das Unternehmen damit begonnen, al...
Die beiden Parameter innodb_flush_log_at_trx_comm...
Beim Öffnen ausländischer Websites werden häufig ...
Vorwort mysqlslap ist ein Diagnoseprogramm, das d...
1. Version verwenden vite:2.0 Ant-Design-Vue: 2.0...
Inhaltsverzeichnis Vorwort Der Unterschied zwisch...
dig - Dienstprogramm zur DNS-Suche Wenn beim Zugr...