详解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 npm包管理的配置方法及常用命令介绍
Jun 05 NodeJs
Nodejs关于gzip/deflate压缩详解
Mar 04 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
使用vs code开发Nodejs程序的使用方法
Sep 21 NodeJs
使用npm安装最新版本nodejs
Jan 18 NodeJs
详解从NodeJS搭建中间层再谈前后端分离
Nov 13 NodeJs
nodejs同步调用获取mysql数据时遇到的大坑
Mar 02 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 NodeJs
nodejs环境使用Typeorm连接查询Oracle数据
Dec 05 NodeJs
Nodejs实现微信分账的示例代码
Jan 19 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 str_pad 函数使用详解
2009/01/13 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
php5.3以后的版本连接sqlserver2000的方法
2014/07/28 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
Element InputNumber 计数器的实现示例
2020/08/03 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
python对离散变量的one-hot编码方法
2018/07/11 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
银行职员个人的工作自我评价
2014/02/15 职场文书
总裁助理岗位职责
2014/02/17 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis