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字符串给微信服务端还是验证失败,特此记录解决方案


版权声明:本文为weixin_44340777原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。