Maison >interface Web >js tutoriel >Comment développer un mur WeChat avec Node.js
Cette fois, je vais vous expliquer Node.js comment développer un mur WeChat, quelles sont les précautions pour développer un mur WeChat avec Node.js, ce qui suit est un guide pratique Dans ce cas, jetons un coup d'oeil.
Vérifier la validité du serveur
Recevoir les messages envoyés par les utilisateurs au serveur via le compte d'abonnement WeChat
Analyser le format de message texte XML reçu en JSON
Utiliser le Le modèle construit un message texte XML qui répond à l'utilisateur
Diffuse le message reçu via le service WebSocket
Obtient les informations de base de l'utilisateur (nom et avatar) de l'expéditeur du message
Service WeChat De manière générale, ils sont divisés en deux catégories, l'une est le service de messagerie et l'autre est le service de données.
Le service de messagerie est un utilisateur qui envoie un message dans le compte du service WeChat , puis le service WeChat envoie le message au serveur du développeur, il est donc activement initié par WeChat et passivement reçu par le serveur développeur.
Le format du corps des données du service de messagerie est XML. L'authenticité et la validité de la transmission des données sont garanties par un jeton convenu entre le service WeChat et le serveur du développeur.
//verify.jsvar PORT = 9529;var http = require('http');var qs = require('qs');var TOKEN = 'yuntu';function c heckSignature(params, token){ //1. 将token、timestamp、nonce三个参数进行字典序排序
//2. Splice les trois paramètres chaîne en une seule chaîne pour le cryptage sha1
//3. vient de WeChat
var key = [token, params.timestamp, params.nonce].sort().join(''); var sha1 = require('crypto').createHash('sha1'); sha1.update(key); return sha1.digest('hex') == params.signature; }var server = http.createServer(function (request, response) { //解析URL中的query部分,用qs模块(npm install qs)将query解析成json var query = require('url').parse(request.url).query; var params = qs.parse(query); console.log(params); console.log("token-->", TOKEN); if(checkSignature(params, TOKEN)){ response.end(params.echostr); }else{ response.end('signature fail'); } }); server.listen(PORT);console.log("Server runing at port: " + PORT + ".");
En fait, la vérification du jeton sert uniquement à vérifier auprès du serveur du développeur que la source du message est bien WeChat et non falsifiée (car les autres ne connaissent pas le jeton spécifique), WeChat , en tant qu'initiateur du message, ne nécessite pas de vérification. En d'autres termes, les développeurs peuvent également être paresseux et ne pas effectuer de vérification (la conséquence est que d'autres peuvent imiter WeChat et publier des demandes sur le service ).
//noverify.js/**
La vérification du TOKEN vise à garantir que la demande est authentique et valide. WeChat lui-même ne vérifie pas le TOKEN
Le serveur du développeur peut également renvoyer directement echostr sans vérification. c'est le cas Cela signifie qu'un tiers peut également facilement falsifier des requêtes se faisant passer pour WeChat et les envoyer au serveur du développeur
*/var PORT = 9529;var http = require('http');var qs = require('qs');var server = http.createServer(function (request, response) { var query = require('url').parse(request.url).query; var params = qs.parse(query); response.end(params.echostr); }); server.listen(PORT);console.log("Server runing at port: " + PORT + ".");Configurer le serveur du compte du service WeChat comme URL du serveur de développement , et vous pouvez recevoir des messages du compte du service WeChat Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php ! Lecture recommandée :
Laravel implémente un système d'authentification multi-utilisateurs
Méthode de sécurité des données pour PHP pour empêcher l'injection SQL
Générer un code de vérification complexe (inclinaison, ligne d'interférence sinusoïdale, collage, vérification de rotation)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!