详解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(三)--- Node.js模块
May 25 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
浅析Nodejs npm常用命令
Jun 14 NodeJs
nodejs连接mongodb数据库实现增删改查
Dec 01 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
Nodejs封装类似express框架的路由实例详解
Jan 05 NodeJs
nodeJS与MySQL实现分页数据以及倒序数据
Jun 05 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 03 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+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
Javascript 中的 && 和 || 使用小结
2010/04/25 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
JS 实现导航栏悬停效果(续)
2013/09/24 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
华为慧通面试题
2012/09/11 面试题
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
年终自我鉴定
2013/10/09 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
司法局火灾防控方案
2014/06/05 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
陪护人员误工证明
2015/06/24 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
超级详细实用的pycharm常用快捷键
2021/05/12 Python
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫
mybatis 获取更新记录的id
2022/05/20 Java/Android
sql注入报错之注入原理实例解析
2022/06/10 MySQL