nodejs+express解决微信公众号token验证失败
问题描述下面是服务端代码问题原因解决方案重新运行服务器问题解决结语问题描述
这里是测试号的状态,如果是公众号的话上边应该显示token验证失败
下面是服务端代码
const express = require('express')const app = express()app.use((req, res, next) => {console.log(req.query);//这里直接返回echostr字符串给微信服务端,结果验证还是失败res.send(req.query.echostr)})app.listen(3000,()=>{console.log('服务器启动成功')})
这里并没有对是不是微信服务端发来的消息进行验证只是返回echostr字符串来测试是否成功
问题原因
应该是express向微信服务端发送消息的时候格式有问题导致echostr这个随机字符串并不是以纯文本形式发送的
解决方案
在发送echostr字符串之前指定发送的格式,下面附代码
const express = require('express')const app = express()app.use((req, res, next) => {console.log(req.query);//这里很关键的一句,表示发送的消息是以纯文本形式发送的res.set('Content-Type','text/plain')res.send(req.query.echostr)})app.listen(3000,()=>{console.log('服务器启动成功')})
重新运行服务器问题解决
结语
在开发公众号时候遇见了一个小坑,返回echostr字符串给微信服务端还是验证失败,特此记录解决方案