详解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制作爬虫全过程
Dec 22 NodeJs
Nodejs初级阶段之express
Nov 23 NodeJs
Nodejs Stream 数据流使用手册
Apr 17 NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 NodeJs
NodeJS配置HTTPS服务实例分享
Feb 19 NodeJs
nodejs学习笔记之路由
Mar 27 NodeJs
NodeJS使用七牛云存储上传文件的方法
Jul 24 NodeJs
nodejs调取微信收货地址的方法
Dec 20 NodeJs
详解NODEJS的http实现
Jan 04 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
一些常用的Javascript函数
2006/12/22 Javascript
JQuery实现自定义对话框的代码
2008/06/15 Javascript
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
js判断样式className同时增加class或删除class
2013/01/30 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
JavaScript继承与多继承实例分析
2018/05/26 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
js实现列表按字母排序
2020/08/11 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
使用Turtle画正螺旋线的方法
2017/09/22 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
使用Python发现隐藏的wifi
2020/03/04 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
python用Configobj模块读取配置文件
2020/09/26 Python
python实现计算器简易版
2020/12/17 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
计算机软件个人的自荐信范文
2013/12/01 职场文书
办理居住证介绍信
2014/01/15 职场文书
十八届三中全会报告学习材料
2014/02/17 职场文书
校园歌咏比赛主持词
2014/03/18 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
元旦主持词开场白
2015/05/29 职场文书
学雷锋感言
2015/08/03 职场文书
初中体育课教学反思
2016/02/16 职场文书
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python