nodejs开发微信公众号(一)

一、准备工作

1、本人学习教程:慕课网Scott老师的《Node.js七天搞定微信公众号》 ,教程还不错,,最大的不同是教程里面用的koa版本不是最新的,用最新的koa版本需要把里面的genanter函数全部替换至async,这个教程还是挺不错的,适合学习nodejs。
2、文档:微信开发官方文档,必备。https://mp.weixin.qq.com/wiki
3、微信开发测试号:测试公众号,必备。
4、node环境,koa版本:2.5.2,

二、配置内网映射服务器

开发公众号之前必须确保微信服务器能够访问到自己的后台地址,所以需要将自己的本机ip暴露在公网中,让微信公众号能够访问到
靠谱的方法有两种:
1、使用内网穿透工具(ngrok,花生壳等)
2、使用QQ浏览器
ngrok详细配置可参考

三:验证消息的确来自微信服务器

首先需要申请一个测试的公众号,在公众号后台点击开发者工具=》接口测试号申请=》用自己微信登录进去就可以看到
接下来配置公众号接口信息
提交的时候微信服务器会向配置的服务器地址发送一个get请求,此过程需要对传入的参数进行验证
1)将token、timestamp、nonce三个参数进行字典序排序(tooken是测试公众号里面自行配置的信息)
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
确认请求来源于微信后,将signature字段返回给微信服务器,微信服务器收到返回信息,会弹出配置成功(此过程有时候会失败,确认代码没问题的情况下需要多试几次)

var str = [token, timestamp, nonce].sort().join('');
if(sha1(str) == signature){
  ctx.response.body = echostr + ''//将signature字段返回给微信服务器
}

这里需要在代码里面引入sha1加密文件,npm安装一下就可以了,ctx是koa2里面的全局上下文,里面有包含请求响应头信息等,在koa1里面是用this指代的
到这里,公众号开发第一步就成功了
后续接收微信服务器推送的消息均可按这个流程进行请求验证

哈哈,本人后台小白一枚,有什么不对的欢迎大佬们指正哈

你可能感兴趣的:(nodejs开发微信公众号(一))