最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Node.js如何开发微信墙

来源:动视网 责编:小采 时间:2020-11-27 19:58:24
文档

Node.js如何开发微信墙

Node.js如何开发微信墙:这次给大家带来Node.js如何开发微信墙,Node.js开发微信墙的注意事项有哪些,下面就是实战案例,一起来看一下。验证服务器有效性接收用户通过微信订阅号发给服务器的消息解析收到的XML文本消息格式为JSON用模板构造应答用户的XML文本消息将接收到的消息通过W
推荐度:
导读Node.js如何开发微信墙:这次给大家带来Node.js如何开发微信墙,Node.js开发微信墙的注意事项有哪些,下面就是实战案例,一起来看一下。验证服务器有效性接收用户通过微信订阅号发给服务器的消息解析收到的XML文本消息格式为JSON用模板构造应答用户的XML文本消息将接收到的消息通过W
 这次给大家带来Node.js如何开发微信墙,Node.js开发微信墙的注意事项有哪些,下面就是实战案例,一起来看一下。

验证服务器有效性

接收用户通过微信订阅号发给服务器的消息

解析收到的XML文本消息格式为JSON

用模板构造应答用户的XML文本消息

将接收到的消息通过WebSocket服务广播

获取消息发送人的用户基本信息(名字和头像)

微信服务大体上分为两类,一类是消息服务,一类是数据服务。

消息服务是由用户在微信服务号中发送消息,然后微信服务讲消息推送给开发者服务器,因此它是由微信主动发起,开发者服务器被动接收的。

消息服务的数据体格式是XML,微信服务与开发者服务器之间通过约定token保证数据传输的真实和有效性。

//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. 将三个参数字符串拼接成一个字符串进行sha1加密
//3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

 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 + ".");

事实上,token验证仅用来给开发者服务器验证消息来源确实是微信,而不是伪造的(因为别人不知道具体的token),作为消息发起方的微信并不要求必须验证,也就是说,开发者也可以偷懒不做验证(后果是别人可以模仿微信给服务post请求)。

//noverify.js/**


TOKEN 校验是保证请求的真实有效,微信自己并不校验TOKEN,
开发者服务器也可以不校验直接返回echostr,
但是这样的话意味着第三方也可以很容易伪造请求假装成微信发送给开发者服务器

*/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 + ".");

将微信服务号的服务器配置为开发服务器的URL,就可以接收到微信服务号的消息了

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

Laravel实现多用户认证系统

PHP防SQL注入的数据安全方法

生成错综复杂的(倾斜,正弦干扰线,黏贴,旋转验)证码

文档

Node.js如何开发微信墙

Node.js如何开发微信墙:这次给大家带来Node.js如何开发微信墙,Node.js开发微信墙的注意事项有哪些,下面就是实战案例,一起来看一下。验证服务器有效性接收用户通过微信订阅号发给服务器的消息解析收到的XML文本消息格式为JSON用模板构造应答用户的XML文本消息将接收到的消息通过W
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top