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

Spring Boot控制器配置WhatsApp Cloud API验证失败求助

排查WhatsApp Cloud API回调验证失败问题

以下是几个关键排查方向:

  • 验证令牌完全匹配检查
    确保WhatsApp配置页面输入的验证令牌和代码中VERIFICATION_TOKEN的字符串完全一致,包括大小写、空格、特殊字符,任何细微差异都会导致验证失败。

  • Ngrok URL与路径正确性

    • 配置的回调URL必须是Ngrok当前运行的隧道地址,且末尾拼接/webhook路径,例如完整URL应为https://xxxx-xx-xx-xx-xx.ngrok.io/webhook。
    • 手动用浏览器访问该完整URL并携带测试参数:https://xxxx.ngrok.io/webhook?hub.mode=subscribe&hub.challenge=test&hub.verify_token=12345,检查是否能返回test和200状态码。如果访问失败,说明Ngrok隧道未正常转发或Spring Boot服务未启动。
  • Spring Boot服务与端口匹配

    • 确认Spring Boot服务本地正常启动,且Ngrok命令指定的转发端口与服务端口一致(例如服务用8080端口,Ngrok命令需写ngrok http 8080)。
    • 查看Spring Boot日志,验证配置回调时是否收到了来自WhatsApp的GET请求。若日志中无该请求记录,说明请求未到达服务,需检查Ngrok隧道或网络连接。
  • 请求参数名严格匹配
    代码中@RequestParam的参数名必须与WhatsApp传递的参数完全一致:hub.mode、hub.challenge、hub.verify_token,不能修改大小写或替换下划线为驼峰命名。

  • 防火墙/代理拦截排查
    本地防火墙、杀毒软件或代理工具可能拦截了Ngrok的请求,暂时关闭相关工具后重新尝试验证。

附你提供的控制器代码:

@RestController
public class WhatsappController {
    private final String VERIFICATION_TOKEN = "12345";

    @GetMapping("/webhook")
    public ResponseEntity<String> verifyWebhook(@RequestParam("hub.mode") String mode,
                                                @RequestParam("hub.challenge") String challenge,
                                                @RequestParam("hub.verify_token") String token) {
        if (mode.equals("subscribe") && token.equals(VERIFICATION_TOKEN)) {
            return new ResponseEntity<>(challenge, HttpStatus.OK);
        } else {
            return new ResponseEntity<>("Verification token or mode mismatch", HttpStatus.FORBIDDEN);
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:55:30