Ich habe node.js zum Erstellen des Servers gewählt. Freunde, die es noch nicht installiert haben, können sich meine anderen node.js-Blogs ansehen. Serverinstallation und -konfiguration Initialisieren Sie das Projekt und die Konfigurationsdatei package.json wird automatisch erstellt. npm init -y Installieren Sie das Express-Framework und das Anforderungsmodul. npm install express –speichern npm Installationsanforderung --save Installieren Sie nodemon, um Dateiänderungen zu überwachen (überspringen Sie diesen Schritt, wenn es bereits installiert ist). npm installiere nodemon -g KodierungNachdem Sie den obigen Befehl ausgeführt haben, erstellen Sie die Datei app.js im Projektverzeichnis und schreiben Sie den folgenden Code: Stellen Sie das Express-Framework und das Anforderungsmodul vor und konfigurieren Sie App-ID und Secret. const express = erfordern('express') const bodyParser = erfordern('body-parser') const Anfrage = erforderlich('Anfrage') const app = express() app.verwenden(bodyParser.json()) Konstanten wx = { appid: '', // Sie müssen die AppID des Entwicklers eingeben secret: '' // Muss das AppSecret des Entwicklers eingeben } Simulieren Sie die Datenbank. (In diesem Fall verwenden wir ein Array. Die Datenbankeinrichtung ist ziemlich kompliziert und wird hier nicht gezeigt. Weitere node.js+mysql-Projekte finden Sie in meinem Blog.) var db = { // simulierte Datenbanksitzung: {}, // Sitzungsinformationen von OpenID und Sitzungsschlüssel speichern Benutzer: {} // Benutzerdatensätze wie Benutzername, Punkte usw. speichern} Fordern Sie die Anmeldeoberfläche an und überprüfen Sie die URL-Adresse der WeChat-Oberfläche der Anmeldeinformationen. app.post('/login', (req, res) => { var url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + wx.appid + '&secret=' + wx.secret + '&js_code=' + req.body.code + „&grant_type=Autorisierungscode“ Anfrage(URL, (Fehler, Antwort, Text) => { if(){ // Der Code hier bestimmt, ob session.openid existiert} } res.json({Token: Token}) }) }) Bestimmen Sie den OpenID-Anweisungscode in der Sitzung. wenn (Sitzung.openid) { var Sitzung = JSON.parse(Body) // Wird zum Generieren von Token verwendet var token = 'token_' + neues Date().getTime() db.session[token] = Sitzung } Zugangsschnittstelle 3000 einstellen app.listen(3000, () => { console.log('Server läuft unter http://127.0.0.1:3000') }) Ich habe es für dich geklärt Da die App-ID und der Sitzungsschlüssel hier entschlüsselt werden müssen, wird die WXBizDataCrypt-Funktion von WeChat verwendet var Krypto = erforderlich('Krypto') Funktion WXBizDataCrypt(Anwendungs-ID, Sitzungsschlüssel) { this.appId = Anwendungs-ID this.sessionKey = Sitzungsschlüssel } WXBizDataCrypt.prototype.decryptData = Funktion (verschlüsselteDaten, iv) { // Base64-Dekodierung var sessionKey = neuer Puffer(dieser.sessionKey, 'base64') verschlüsselteDaten = neuer Puffer(verschlüsselteDaten, 'base64') iv = neuer Puffer(iv, 'base64') versuchen { // Entschlüsselung var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv) // Automatisches Padding auf „true“ setzen und Padding löschen decipher.setAutoPadding(true) var dekodiert = decipher.update(verschlüsselteDaten, 'binär', 'utf8') dekodiert += decipher.final('utf8') dekodiert = JSON.parse(dekodiert) } fangen (Fehler) { wirf einen neuen Fehler('Unzulässiger Puffer') } wenn (dekodiertes Wasserzeichen.App-ID !== diese.App-ID) { wirf einen neuen Fehler('Unzulässiger Puffer') } Rückgabe dekodiert } module.exports = WXBizDataCrypt Der gesamte Code von app.js lautet wie folgt // Verschlüsselung und Entschlüsselung const crypto = require('crypto'); const WXBizDataCrypt = erfordern('./WXBizDataCrypt') const express = erfordern('express') const bodyParser = erfordern('body-parser') const Anfrage = erforderlich('Anfrage') const app = express() app.verwenden(bodyParser.json()) Konstanten wx = { Anwendungs-ID: '', Geheimnis: '' } var db = { Sitzung: {}, Benutzer: {} } app.post('/login', (req, res) => { // Hinweis: Die App-ID auf der Miniprogrammseite muss ein echtes Konto verwenden. Wenn ein Testkonto verwendet wird, tritt ein Anmeldecodefehler auf console.log('Anmeldecode: ' + req.body.code) var url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + wx.appid + '&secret=' + wx.secret + '&js_code=' + req.body.code + '&grant_type=authorization_code' Anfrage(URL, (Fehler, Antwort, Text) => { console.log('Sitzung: ' + Text) var Sitzung = JSON.parse(Body) wenn(Sitzung.openid) { var token = 'token_' + neues Date().getTime() db.session[token] = Sitzung wenn(!db.user[session.openid]) { db.Benutzer[Sitzung.openid] = { Kredit: 100 } } } res.json({ Zeichen: Zeichen }) }) }) app.get('/checklogin', (req, res) => { var Sitzung = db.session[Anforderung.Abfrage.Token] console.log('checklogin: ', Sitzung) // Gibt den Booleschen Wert zurück, der angibt, ob der Benutzer beim Client angemeldet ist res.json({ is_login:session !== undefiniert }) }) app.get('/Kredit', (req, res) => { var Sitzung = db.session[Anforderung.Abfrage.Token] wenn(Sitzung && db.Benutzer[Sitzung.openid]) { res.json({ Guthaben: db.user[session.openid].credit }) } anders { res.json({ err: ,,Der Benutzer existiert nicht oder ist nicht angemeldet. ' }) } }) app.post('/Benutzerinfo', (req, res) => { // Den Sitzungswert abrufen var session = db.session[req.query.token] console.log('Sitzung:' + Sitzung) wenn(Sitzung) { // Verschlüsselte Daten mit App-ID und Sitzungsschlüssel entschlüsseln var pc = neues WXBizDataCrypt(wx.appid, session.session_key) var Daten = pc.decryptData(req.body.encryptedData, req.body.iv) console.log('Nach der Entschlüsselung:', Daten) // Überprüfen Sie, ob die Rohdaten korrekt sind. var sha1 = crypto.createHash('sha1') sha1.update(req.body.rawData + session.session_key) var signature2 = sha1.digest('hex') console.log(Signatur2) Konsole.log(erforderlich.Body.Signatur) res.json({ Pass: Signatur2 === req.body.signature }) } anders { res.json({ err: ,,Der Benutzer existiert nicht oder ist nicht angemeldet. ' }) } }) app.listen(3000, () => { console.log('Server läuft unter http://127.0.0.1:3000') }) Starten Sie den ServerSpeichern Sie den obigen Code, öffnen Sie die Konsole oder das Powershell- oder Linux-Terminal und führen Sie die folgende Anweisung aus, um die Servernummer 3000 für den Serverzugriff zu öffnen. nodemon app.js Dies ist das Ende dieses Artikels zum Erstellen eines Servers für das Benutzeranmeldemodul des WeChat Mini-Programms. Weitere Informationen zum Erstellen eines Servers für das Anmeldemodul des WeChat Mini-Programms finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Docker-Lernen: Die spezifische Verwendung von Container-Containern
Artikelstruktur 1. Vorbereitung 2. Installieren S...
Programmierer müssen sich viel mit MySQL befassen...
eins. Vorwort <br />Sie werden diese Art von...
Vorwort Bei der Entwicklung statischer Seiten, wi...
1. Concat-Funktion. Häufig verwendete Verbindungs...
Vorwort: Wenn wir Dezimalzahlen speichern müssen ...
Die gebräuchlichste, am häufigsten verwendete und ...
Konfiguration der Hostdatei des Linux-Servers Die...
Berechnung des Boxmodells <br />Rand + Rahme...
Erneutes Mounten des Datenträgers nach dem Initia...
Konfigurieren des Alibaba Cloud Docker Container ...
Inhaltsverzeichnis Vorwort 1. So stornieren Sie e...
Inhaltsverzeichnis Hintergrund 1. Was ist DNS-Pre...
1. Gehen Sie zunächst auf die offizielle Website ...
Nachdem Vmvare die Festplattengröße der virtuelle...