详解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的前后端分离的思考与实践(二)模版探索
Sep 26 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
轻松创建nodejs服务器(9):实现非阻塞操作
Dec 18 NodeJs
NodeJS Web应用监听sock文件实例
Feb 18 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
nodejs结合Socket.IO实现的即时通讯功能详解
Jan 12 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
NodeJS实现同步的方法
Mar 02 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多线程异步请求的3种方法
2014/01/17 PHP
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
jQuery实现广告条滚动效果
2017/08/22 jQuery
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
详解vue中localStorage的使用方法
2018/11/22 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
详解Python编程中基本的数学计算使用
2016/02/04 Python
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
python实现飞机大战
2018/09/11 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
python中shell执行知识点
2020/05/06 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
远程教育心得体会
2014/01/03 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
导游词之张家口
2019/12/13 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
python pyhs2 的安装操作
2021/04/07 Python
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android