微信公众号感觉入门是真的难啊,受权限的约束,个人开发者真的挺难走的,特别像博主这种主攻前端的人。由于迟迟没把域名备案办下来。先从测试号入手。
申请页面信息
打开测试号申请页面,可以看到需要填写的内容。
首先要做的就是接口配置信息这部分内容了。
内网穿透
一般我们会在本地进行开发,因此必须使用工具进行内网穿透,将一个公网域名穿透到本地内网。用NATAPP可以做到。使用方法很简单,这里不再赘述。
NodeJS服务器搭建
我这边使用express生成器搭建服务。
// 全局安装生成器
npm install express-generator -g
// 生成项目,并指定模板引擎
express --view=ejs wechat_express
cd wechat_express
// 安装node依赖
npm install
// 启动
set DEBUG=myapp:* & npm start
新建一个配置文件config/index.js
const CONFIG = {
port: '4300',
token: '你的token'
}
exports.CONFIG = CONFIG;
在app.js中指定端口
app.set('port', config.port);
写路由,进行微信公众号的token验证
var express = require('express');
var crypto = require('crypto');
var config = require('../config/index').CONFIG;
var router = express.Router();
router.get('/',function(req,res){
console.log(req)
//1.获取微信服务器Get请求的参数 signature、timestamp、nonce、echostr
var signature = req.query.signature,//微信加密签名
timestamp = req.query.timestamp,//时间戳
nonce = req.query.nonce,//随机数
echostr = req.query.echostr;//随机字符串
//2.将token、timestamp、nonce三个参数进行字典序排序
var array = [config.token,timestamp,nonce];
array.sort();
//3.将三个参数字符串拼接成一个字符串进行sha1加密
var tempStr = array.join('');
const hashCode = crypto.createHash('sha1'); //创建加密类型
var resultCode = hashCode.update(tempStr,'utf8').digest('hex'); //对传入的字符串进行加密
//4.开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
if(resultCode === signature){
res.send(echostr);
}else{
res.send('mismatch');
}
});
module.exports = router;
启动服务,并在测试号申请页面,填入URL和Token进行验证。验证成功后便可以继续下一步了。
JS接口安全域名
暂时还未用到,填写URL所在域名即可。