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

Facebook Workplace聊天机器人Webhook回调URL配置失败求助

解决Facebook Workplace Webhook验证失败的问题

Hey,我之前帮同事排查过几乎一模一样的问题,咱们一步一步来搞定它:

先确认你的PHP验证逻辑是否完整

Facebook Workplace的Webhook验证是靠GET请求触发的,你的代码必须精准满足这几个要求,差一点都不行:

  • 要严格校验请求里的hub.verify_token和你后台设置的verify_token完全匹配(大小写、特殊符号、空格一个都不能错)
  • 验证通过后,必须只返回hub.challenge的值,不能输出任何额外内容——哪怕是一个空格、一行注释、或者PHP的报错信息都会导致验证失败
  • 验证不通过时,返回403禁止访问就行

你贴的代码只写了开头,大概率是没写完完整逻辑,给你一个经过实测的完整代码示例:

<?php
// 这里的token要和你在Workplace后台输入的完全一致,别打错!
$verify_token = "你的专属验证token";

// 处理Webhook验证的GET请求
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    $received_token = $_GET['hub_verify_token'] ?? '';
    $challenge = $_GET['hub_challenge'] ?? '';

    if ($received_token === $verify_token) {
        // 关键:只返回challenge值,不要加任何多余输出
        header('Content-Type: text/plain');
        echo $challenge;
        exit;
    } else {
        header('HTTP/1.1 403 Forbidden');
        echo '验证token不匹配';
        exit;
    }
}

// 验证通过后,处理Workplace发来的POST消息请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $input_data = file_get_contents('php://input');
    // 这里写你处理聊天消息的逻辑
    echo 'OK';
    exit;
}
?>

再排查服务器和URL的坑

代码没问题的话,还有几个容易忽略的点:

  • 你的服务器必须能被Facebook访问到:如果是本地开发环境(比如localhost),Facebook的服务器根本连不上,得用内网穿透工具(比如ngrok),或者把代码部署到公网服务器
  • HTTPS证书必须合法:虽然你用了HTTPS,但自签名证书Facebook不认,得用Let's Encrypt这类受信任的CA颁发的免费证书
  • URL路径要完全对应:比如你后台填的是https://your-site.com/workplace-bot/webhook.php,那这个路径下必须就是上面的验证代码,不能有重定向、404,也不能是目录
  • 服务器防火墙别挡着:检查你的服务器安全组/防火墙,是否允许来自Facebook IP段的请求,有些防火墙会默认拦截外部的GET请求

最后手动测试验证逻辑

你可以自己模拟Facebook的验证请求,用curl或者直接在浏览器访问:

curl "https://你的域名/webhook.php?hub_mode=subscribe&hub_verify_token=你的token&hub_challenge=123456"

如果返回的是123456,说明验证逻辑没问题;如果返回其他内容或者报错,就对着代码再调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:10:56