详解nodejs微信公众号开发——1.接入微信公众号


Posted in NodeJs onApril 10, 2017

接入微信公众号是开发的第一步,万事开头难,走好第一步,后面的路就更宽广。

1.公众平台测试帐号的使用

登录微信公众平台,由于很多开发人员并没有认证的的微信公众号,所以比较折中的方式是使用公众平台测试帐号来测试功能,其优势是能够测试微信公众号的绝大部分功能,不受认证门槛的限制。

详解nodejs微信公众号开发——1.接入微信公众号

进入测试账号管理界面:

我们需要配置接口的信息,URLToken是微信公众平台和本地开发服务建立连接的桥梁。

详解nodejs微信公众号开发——1.接入微信公众号

微信配置好后,扫面下方的测试号二维码,即可以在手机上测试开发的功能。

详解nodejs微信公众号开发——1.接入微信公众号

2.验证公众号

详解nodejs微信公众号开发——1.接入微信公众号

一图胜千言。接入公众号时,微信公众平台需要验证开发者的身份,向开发者填写的URL发送一个GET请求,请求中包含4个参数:signatureechostrtimestampnonce,收到该请求,我们需要做的事情:

  1. tokentimestampnonce三个参数进行字典排序;
  2. 将三个字符串拼接成一个字符串进行sha1加密;
  3. 将加密后的字符串与signature进行比较,如果相同,表示这个请求来自微信,我们直接原样返回echostr的内容,接入验证成功。

3.搭建开发服务器

搭建开发服务器的方式有很多,如购买云服务器、使用花生壳、ngrok、localtunnel等。这里为了简单起见采用localtunnel。先全局方式安装localtunnel,

npm install -g lt

启动lt

lt --port 8080  //对外暴露8080端口,可端口号可自己随便设定

4.编写代码

好了,现在开始编写app.js的代码:

'use strict'

var Koa = require('koa');
var sha1 = require('sha1');

var config = {
  wechat:{
    appID:'...', //填写你自己的appID
    appSecret:'...', //填写你自己的appSecret
    token:'...' //填写你自己的token
  }
};

var app = new Koa();

app.use(function *(next){
  var token = config.wechat.token;
  var signature = this.query.signature;
  var nonce = this.query.nonce;
  var timestamp = this.query.timestamp;
  var echostr = this.query.echostr;
  var str = [token,timestamp,nonce].sort().join(''); //按字典排序,拼接字符串
  var sha = sha1(str); //加密
  this.body = (sha === signature)? echostr + '' : 'failed'; //比较并返回结果
});
app.listen(8080);

5.配置测试公众号信息

代码编写完毕,现在开始正式配置啦。在终端中输入lt --port 8080启动localtunnel,得到对外可访问的URL:

详解nodejs微信公众号开发——1.接入微信公众号

这个URL填写到测试账号管理界面中的URLToken字段可随意填写,方便起见,就用wemovie吧!

填写完毕,点击提交,发现验证成功,恭喜!

详解nodejs微信公众号开发——1.接入微信公众号

注:

  1. 由于localtunnel不是很稳定,所以可能一开始点击提交提示的是黄条的配置失败,需要多点一两次按钮;
  2. 每次重启程序,都需要重启localtunnel获取新的URL,然后重新配置。(这就是选择简单付出的代价T_T)

到此为止,已经打开了通向微信公众号开发的大门,接下来,我们将继续探索nodejs微信公众号开发之旅。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
NodeJS连接MongoDB数据库时报错的快速解决方法
May 13 NodeJs
Nodejs 获取时间加手机标识的32位标识实现代码
Mar 07 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
NodeJS模块与ES6模块系统语法及注意点详解
Jan 04 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 NodeJs
nodejs环境使用Typeorm连接查询Oracle数据
Dec 05 NodeJs
详解nodejs内置模块
May 06 NodeJs
使用 NodeJS+Express 开发服务端的简单介绍
Apr 07 #NodeJs
初识NodeJS服务端开发入门(Express+MySQL)
Apr 07 #NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 #NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 #NodeJs
详解nodejs爬虫程序解决gbk等中文编码问题
Apr 06 #NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 #NodeJs
Ajax异步文件上传与NodeJS express服务端处理
Apr 01 #NodeJs
You might like
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
表单提交前触发函数返回true表单才会提交
2014/03/11 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
js常用DOM方法详解
2017/02/04 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
2018/03/22 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
vue实现登录拦截
2020/06/29 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
利用Python如何生成随机密码
2016/04/20 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
pygame实现五子棋游戏
2019/10/29 Python
python中有关时间日期格式转换问题
2019/12/25 Python
Python Http请求json解析库用法解析
2020/11/28 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
保洁主管岗位职责
2013/11/20 职场文书
小学防溺水制度
2014/01/29 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
销售员态度差检讨书
2014/10/26 职场文书
检讨书模板大全
2015/05/07 职场文书
黄河绝恋观后感
2015/06/08 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python