详解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 相关文章推荐
nodejs实现遍历文件夹并统计文件大小
May 28 NodeJs
浅析Nodejs npm常用命令
Jun 14 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
利用nodejs监控文件变化并使用sftp上传到服务器
Feb 18 NodeJs
NodeJs模拟登陆正方教务
Apr 28 NodeJs
win系统下nodejs环境安装配置
May 04 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
原生nodejs使用websocket代码分享
Apr 07 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 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
php中的strpos使用示例
2014/02/27 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
JS 继承实例分析
2008/11/04 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
web页面数据展示新想法(json)
2010/06/08 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
js中null与空字符串""的区别讲解
2019/01/17 Javascript
了解JavaScript中的选择器
2019/05/24 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
python回调函数用法实例分析
2015/05/09 Python
浅析Python编写函数装饰器
2016/03/18 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
通用求职信范文模板分享
2013/12/27 职场文书
关于旅游的活动方案
2014/08/15 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
放飞理想主题班会
2015/08/14 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
公安忠诚教育心得体会
2016/01/23 职场文书
php字符串倒叙
2021/04/01 PHP
Python关于OS文件目录处理的实例分享
2021/05/23 Python