详解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获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
轻松创建nodejs服务器(9):实现非阻塞操作
Dec 18 NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 NodeJs
nodejs批量修改文件编码格式
Jan 22 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
nodejs使用express获取get和post传值及session验证的方法
Nov 09 NodeJs
使用nodejs+express实现简单的文件上传功能
Dec 27 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
搜索引擎技术核心揭密
2006/10/09 PHP
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
学习YUI.Ext 第七天--关于View&JSONView
2007/03/10 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
javascript self对象使用详解
2016/10/18 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
python中模块查找的原理与方法详解
2017/08/11 Python
Python SQLite3简介
2018/02/22 Python
Django框架反向解析操作详解
2019/11/28 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
关于Java finally的面试题
2016/04/27 面试题
公开服务承诺制度
2014/03/26 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
中秋节祝酒词
2015/08/12 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书