You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置WhatsApp Webhook回调URL时验证失败求助

解决WhatsApp Webhook验证失败问题

核心验证逻辑要求

WhatsApp Webhook验证时,Meta服务器会发送GET请求,携带hub.mode、hub.verify_token、hub.challenge三个参数,你必须完成以下操作:

  • 校验hub.mode是否为subscribe
  • 确认hub.verify_token和你在配置页面设置的令牌完全一致(大小写、空格、特殊字符都要匹配)
  • 以上条件满足时,直接返回hub.challenge的原始值,响应头Content-Type设为text/plain,状态码保持200

常见错误排查点

  • 令牌不匹配:检查配置页面填写的令牌和代码中校验的内容,避免拼写错误、大小写差异或多余空格。
  • 响应格式错误:禁止将hub.challenge包装为JSON或其他结构,必须返回纯文本(你在Postman中看到的纯文本格式是正确的,要确保服务返回的就是这种格式)。
  • 请求拦截问题:确认你的服务能正常接收GET请求,没有被防火墙、反向代理(如Nginx)拦截或修改参数/响应内容。
  • HTTPS要求:回调URL必须使用受信任CA颁发的HTTPS证书,自签名证书无法通过验证;本地测试可使用ngrok等工具暴露合法HTTPS地址。
  • IP访问限制:确保服务器允许Meta的官方IP段访问,避免安全组或防火墙阻断请求。

示例验证代码(Node.js/Express)

app.get('/webhook', (req, res) => {
  const targetToken = '你设置的验证令牌';
  const mode = req.query['hub.mode'];
  const token = req.query['hub.verify_token'];
  const challenge = req.query['hub.challenge'];

  if (mode && token) {
    if (mode === 'subscribe' && token === targetToken) {
      res.status(200).send(challenge); // 直接返回纯文本挑战值
    } else {
      res.sendStatus(403);
    }
  } else {
    res.sendStatus(400);
  }
});

内容的提问来源于stack exchange,提问作者Shailesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:43:19