系列文章目录
微信公众号开发流程、踩坑盘点(一)
微信公众号开发流程、踩坑盘点(二)
一、服务器配置
如下图,在前一篇配置的基础上,你需要开始配置服务器,还是在这个页面,首先为了后续开发,你的服务器要具备获取access_token的许可,你要填入你的服务器IP到这个IP白名单,这个IP你直接去租服务器的运营商控制台就可以看到。如果你使用的是内网穿透的方式,那这里一般是填写你自己机器的IP。如果你使用了微信云托管,那就不需要填(这个我没用过具体怎么用不清楚,应该和以前的小程序云函数类似的效果)。
接下来就是填写服务器配置,我这边已经启用了,你们没启用要先点击修改配置,然后填入相关信息。
URL填入的就是你后台服务的请求地址,比如你现在已经有一个域名绑定到自己的服务器,请求路径是: https://myserver.top,那么你就填入这个,可能大家会有一个疑问,微信公众号以后还有事件推送,这里只有一个地址,那他怎么知道往那个路由分支推送呢?这里直接说,这个url你填写以后,最后点击确定它会往这个地址发送一个get请求,用来验证你的服务器能否正确响应,如果可以就会提示修改成功,然后点启用就行。而所有事件推送也是往这个url发送请求,不过是post请求,发送来的请求体是xml数据,你对这个xml进行解析来知晓他发来的是什么类型的事件推送。
token你随便填一个好记的就可以,主要用来验证你的服务器能否正确响应的。
再下面的加密秘钥,如果你选择明文则不会使用到,随机一个就行。
所有的都配置好了,你得真正的启动后台程序,来按要求响应,我这里有一个nodejs、express框架的响应函数的代码,其实就是先字典序,再拼接起来,再sha1加密,如果和他发来的signature相同则返回他发来的echostr,这里的三个拼接参数其中两个是他发送来的参数,一个是你填写的token;
聪明的小伙伴可以发现,其实如果你只是想快速过验证,这里只需要一行res.send(req.query.echostr);
就完事。
router.get("/", (req, res) => {
let array = [req.query.timestamp, req.query.nonce, global.Token];
array.sort();
//拼接成一个字符串进行sha1加密
array = sha1(array.join(""));
if (array === req.query.signature) {
res.send(req.query.echostr);
} else {
res.send("error");
}
});
好的,接下来你需要让你的程序跑起来,确保公网通过你填写的url可以访问,并且有响应,你就可以点击保存了,它会弹出绿框表示验证成功,你点击启用即可,以后的事件推送的post请求就会发送到这里,这里似乎有点小bug,就是点一次启用可能不成功,不成功要等一下再点几次,直到显示已启用为止