详解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 相关文章推荐
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
nodejs连接mongodb数据库实现增删改查
Dec 01 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
nodeJs爬虫的技术点总结
May 13 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
Nodejs中的require函数的具体使用方法
Apr 02 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 NodeJs
Nodejs libuv运行原理详解
Aug 21 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 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】人族1v7家ZBath
2020/03/04 星际争霸
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
IIS下PHP的三种配置方式对比
2014/11/20 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
window.parent调用父框架时 ie跟火狐不兼容问题
2009/07/30 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
nodejs实现的一个简单聊天室功能分享
2014/12/06 NodeJs
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
通过C++学习Python
2015/01/20 Python
详细解析Python当中的数据类型和变量
2015/04/25 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
简述 Python 的类和对象
2020/08/21 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
Origins悦木之源英国官网:雅诗兰黛集团高端植物护肤品牌
2017/11/06 全球购物
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
大学优秀学生主要事迹材料
2015/11/04 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python