在Node.js/Express中,ServiceM8的 webhook挑战验证始终返回“Invalid callback challenge key returned”
我正在注册一个ServiceM8的 webhook订阅,但总是收到这个错误:
{"success": false, "message": "Invalid callback challenge key returned", "detail": "Expected '29c97899930d7b3c'"}
我的Express服务器像下面这样处理验证挑战:
app.all('/webhook/job-complete', (req, res) => { const challenge = req.query.challenge || req.body.challenge; const mode = req.query.mode || req.body.mode; if (mode === 'subscribe' && challenge) { return res.status(200).send(challenge); } res.sendStatus(200); });
手动用curl测试可以正常工作。有没有人在Node.js/Express中让ServiceM8的 webhook验证跑通?挑战是通过GET还是POST发送的?
解决方案
curl发送的内容正是你所期望的,但ServiceM8可能发送略有不同的参数,或者需要更严格的响应格式。你能记录进入的请求、查询参数、请求体,并确认 challenge 实际传入的内容是 req.query,并确认 mode === 'subscribe' 吗?
把这个加上来,并把日志发到这里以供审阅:
app.all('/webhook/job-complete', (req, res) => {
const challenge = req.query.challenge || req.body.challenge;
const mode = req.query.mode || req.body.mode;
console.log('Query:', req.query);
console.log('Body:', req.body);
if (mode === 'subscribe' && challenge) {
return res.status(200).send(challenge);
}
res.sendStatus(200);
});
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。