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

配置WhatsApp Business回调URL遇验证失败问题求助

WhatsApp Webhook 验证失败排查方案

我在自有服务器部署了一个简单的Spring Boot REST应用,已配置HTTPS地址指向该应用。尝试在Meta WhatsApp开发平台将/webhook端点注册为回调URL时,始终收到错误提示:

The callback URL or verify token couldn't be validated. Please verify the provided information or try again later.

用POSTMAN调用该端点可正常工作,但Meta端似乎并未触发请求(终端无日志)。项目无Spring Security等安全组件,端点代码如下:

@RequestMapping(method = { RequestMethod.GET, RequestMethod.POST }, value = "/webhook")
public ResponseEntity<String> verifyWebhook(
    @RequestParam(name = "hub.mode", required = false) String mode,
    @RequestParam(name = "hub.verify_token", required = false) String token,
    @RequestParam(name = "hub.challenge", required = false) String challenge
) {
    log.info("Webhook triggered! mode: {}, token: {}, challenge: {}", mode, token, challenge);
    final String WEBHOOK_VERIFY_TOKEN = "ELDSRYQG9QXM15XBK9N7";
    if ("subscribe".equals(mode) && WEBHOOK_VERIFY_TOKEN.equals(token)) {
        System.out.println("Webhook verified successfully!");
        return ResponseEntity.ok(challenge);
    } else {
        return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
    }
}

排查步骤与解决方法

  • 检查服务器网络可达性
    Meta的验证请求可能被防火墙、安全组或NAT规则拦截。确保服务器443端口(HTTPS)对Meta的IP段开放,可用tcpdump port 443在服务器抓包,确认是否有Meta的请求进入;也可以用在线工具检测https://你的域名/webhook的公网可达性。

  • 确认域名与SSL证书有效性
    Meta要求回调URL必须使用受信任CA颁发的SSL证书(不能是自签证书),且证书未过期、域名与证书完全匹配。用浏览器访问该URL,确认无证书警告。

  • 核对验证令牌的一致性
    确保Meta平台填写的Verify Token与代码中WEBHOOK_VERIFY_TOKEN完全一致,包括大小写、特殊字符,无多余空格。

  • 强化请求日志排查
    在端点方法中注入HttpServletRequest,打印所有请求头和参数,确认Meta请求的参数是否正常传递:

    @RequestMapping(method = { RequestMethod.GET, RequestMethod.POST }, value = "/webhook")
    public ResponseEntity<String> verifyWebhook(
        HttpServletRequest request,
        @RequestParam(name = "hub.mode", required = false) String mode,
        @RequestParam(name = "hub.verify_token", required = false) String token,
        @RequestParam(name = "hub.challenge", required = false) String challenge
    ) {
        log.info("Received request headers: {}", Collections.list(request.getHeaderNames()));
        log.info("Webhook triggered! mode: {}, token: {}, challenge: {}", mode, token, challenge);
        // 原有逻辑...
    }
    
  • 检查反向代理配置(若有)
    若使用Nginx等反向代理,需确保配置正确传递请求参数和头部。比如添加proxy_set_header Host $host;,避免域名丢失;同时确认proxy_pass未截断请求路径。

  • 规范回调URL格式
    Meta平台填写的回调URL必须是完整HTTPS地址,例如https://your-domain.com/webhook,结尾不要加斜杠,无多余路径或参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:16:03