一、前言
微信公众号开发真的是很麻烦,于是想弄一个方法,可以在vue开发模式下进行调试的。然后就不断踩坑,终于有了这系列的文章。话少说,直接上干货!(怎么注册公众号这里就省略了)
二、微信公众号测试号
1、输入微信公众号测试号,点击红色圈住的地方
2、然后进行扫码登录,进入到下图这一步
图2-1-1
图2-1-2
我是用node开发的,所以大概的思路和关键代码如下图:
图2-2
图2-3
弄好之后,直接点击下图提交按钮
如果显示配置成功,则代表已经配置成功,如果页面上部弹出配置失败,则代表还是有问题,可以看一下签名算法是否正确
最后附上相关代码,然后第二篇我们将讲解如何获取用户的个人信息(包括微信头像,微信昵称等)
/* 这个token要和上图配置测试号的token一样 */
const token = '123456';
/* 检验token和自己设置的token所生成的签名是否相等 */
/**
* @description 测试是否连的通微信服务器
* 这个是填写自己的后台服务器某个接口的,目的是测试微信服务器是否能接收到自己的服务器的信息。
* 原理是:微信服务器会访问这个接口,并且传过来四个参数:nonce,timestamp,signature还有echostr到你的服务器,
* 然后你的服务器要根据自己设置的token,nonce,timestamp用微信规定的sha1算法得到签名,然后与微信服务器
* 传回来的signature对比,如果相等的话,就返回echostr即可,这样子就完成了公众号测试号的联通
* @author lvzhiyuan
* @date 2020/3/6
*/
router.get('/checkToken', async (req, res, next) => {
try {
const query = url.parse(req.url).query;
const params = qs.parse(query);
if (!checkSignature(params, token)) {
res.end('signature fail');
}
if (req.method === "GET") {
res.end(params.echostr);
}
} catch (e) {
console.log(`routes/users.js-user error: ${e}`);
}
});
/**
* @description sha1签名算法
* @author lvzhiyuan
* @date 2020/5/6
*/
function checkSignature (params, token) {
var key = [token, params.timestamp, params.nonce].sort().join('');
//将token (自己设置的) 、timestamp(微信传过来的时间戳)、nonce(微信传过来的随机数)三个参数进行字典排序
var sha1=require('crypto').createHash('sha1');
//将上面三个字符串拼接成一个字符串再进行sha1加密
sha1.update(key);
return sha1.digest('hex') === params.signature;
}