详解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命令行参数处理模块commander使用实例
Sep 17 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
Nodejs实现批量下载妹纸图
May 28 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
浅谈nodejs中的类定义和继承的套路
Jul 26 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
nodejs简单访问及操作mysql数据库的方法示例
Mar 15 NodeJs
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
May 15 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
PHP防注入安全代码
2008/04/09 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
JS之小练习代码
2008/10/12 Javascript
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
Express使用html模板的详细代码
2017/09/18 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
python组合无重复三位数的实例
2018/11/13 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
python小项目之五子棋游戏
2019/12/26 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
人事助理自荐信
2014/02/02 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
国企干部对照检查材料
2014/08/22 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
创先争优活动个人总结
2015/03/04 职场文书
复兴之路展览观后感
2015/06/02 职场文书