node.js微信小程序配置消息推送的实现


Posted in Javascript onFebruary 13, 2019

在开发微信小程序时,有一个消息推送,它的解释是这样的。

消息推送具体的内容是下面的这个网址   https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/message-push.html,他介绍的也还可以,就是我这里换成了node代码。

消息推送

启用并设置消息推送配置后,用户发给小程序的消息以及开发者需要的事件推送,都将被微信转发至该服务器地址中。

在微信小程序的首页开发里面,开发设置中,微信的官网中,介绍的也还可以,php代码写的差不多也能了解什么意思,但是其中没有告诉我们要把echostr这个参数在接口中返回出来,所以导致我测试了半天都是那个Token验证失败。

写一下学习记录吧,方便后来的人遇到同样的问题,也方便自己以后查阅。

node.js微信小程序配置消息推送的实现

这个里面的url服务器地址就是自己的地址(上面那个是我随便写的),后面接上自己的接口,比如我的就是 /token,当你点击提交的时候,会发现在服务器中会有如下的get请求

node.js微信小程序配置消息推送的实现

避免有些人看不清楚上面的我在这里再用代码重新写一下上面的东西。

GET /checkPushMsg?signature=db6e0c25b7743d8dd7ebfda1db6c742a762a2f37&echostr=1712804002525306855×tamp=1549949926&nonce=982754662 200 1.321 ms - 46

其中的各个参数微信官网中介绍的也非常的详细。

node.js微信小程序配置消息推送的实现

开发者通过检验 signature 对请求进行校验(下面有校验方式)。若确认此次 GET 请求来自微信服务器,请原样返回 echostr 参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

  • 将token、timestamp、nonce三个参数进行字典序排序
  • 将三个参数字符串拼接成一个字符串进行sha1加密
  • 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

验证URL有效性成功后即接入生效,成为开发者。

检验signature的node.js示例代码:

/*
 验证服务器推送url地址
 开发者提交信息后,微信服务器将发送GET请求到填写的服务器URL上,GET请求携带参数如下
   @params signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数,nonce参数
   @params timestamp  时间戳
   @params nonce  随机数
   @params echostr  随机字符串
*/
exports.check_push = (req, res) => {
 console.log(req.query);
 let signature = req.query.signature,
   timestamp = req.query.timestamp,
   nonce = req.query.nonce,
   echostr = req.query.echostr;
 let a = crypto.createHash('sha1').update([pushToken, timestamp, nonce].sort().join('')).digest('hex'); // 这里的pushToken就是在上面的那里配置的Token

 if(a == signature){
  // 如果验证成功则原封不动的返回
  res.send(echostr);
 }else{
  res.send({
   status: 400,
   data: "check msg error"
  })
 }
};

其中遇到的两个问题,上面已经说了,这里再说一下这两个问题。

其中一个是把 token、timestamp、nonce三个参数进行字典序排序,当时想自己写一个方法,写了好久发现有点难受,所以在网上找了一些东西,发现那个 数组的sort方法不传递参数就是那个 默认字符编码排序,所以就非常简单了,加密直接用到crypto模块

另外一个就是微信都没有告诉我们要把那个echostr返回出去,虽然他的意思就是那个意思。。 这样就可以配置成功了。

如果你同样遇到了这个问题,看了我的文章解决了,我会非常高兴。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
Apr 12 Javascript
转一个日期输入控件,支持FF
Apr 27 Javascript
javascript上传图片前预览图片兼容大多数浏览器
Oct 25 Javascript
js判断浏览器是否支持html5
Aug 17 Javascript
关于vue.js弹窗组件的知识点总结
Sep 11 Javascript
JavaScript之生成器_动力节点Java学院整理
Jun 30 Javascript
react-native 封装选择弹出框示例(试用ios&android)
Jul 11 Javascript
React Native使用Modal自定义分享界面的示例代码
Oct 31 Javascript
JS通过位运算实现权限加解密
Aug 14 Javascript
深入理解Vue 的钩子函数
Sep 05 Javascript
详解从vue-loader源码分析CSS Scoped的实现
Sep 23 Javascript
JavaScript中的全局属性与方法深入解析
Jun 14 Javascript
vue实现购物车抛物线小球动画效果的方法详解
Feb 13 #Javascript
Jquery实现无缝向上循环滚动列表的特效
Feb 13 #jQuery
vuex实现的简单购物车功能示例
Feb 13 #Javascript
jquery无缝图片轮播组件封装
Nov 25 #jQuery
Vue中多个元素、组件的过渡及列表过渡的方法示例
Feb 13 #Javascript
vue写h5页面的方法总结
Feb 12 #Javascript
如何将百度地图包装成Vue的组件的方法步骤
Feb 12 #Javascript
You might like
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
PHP 加密解密内部算法
2010/04/22 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
PHP合并discuz用户脚本的方法
2015/08/04 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
屏蔽script注入小例子
2013/11/12 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
使用pygame模块编写贪吃蛇的实例讲解
2018/02/05 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
python实现转圈打印矩阵
2019/03/02 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
爱国卫生月活动总结范文
2014/04/25 职场文书
反对邪教标语
2014/06/30 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
新年祝酒词大全
2015/08/11 职场文书
护理工作心得体会
2016/01/22 职场文书
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript