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

Facebook测试表单无法触发Webhook获取线索信息求助

排查Facebook Lead Ads Webhook测试表单无触发的问题

我来帮你梳理这个Webhook的问题,你遇到的情况很常见,咱们从几个关键方向入手排查:

核心问题:Webhook端点未正确返回响应

你的代码目前只在验证token时返回了challenge,但处理线索数据的阶段没有返回200 OK的响应。Facebook的Webhook要求无论是否处理成功,都必须在15秒内返回200状态码,否则会判定为服务器失败(也就是你看到的102错误)。

修复代码示例

修改你的PHP代码,确保处理完数据后返回响应:

<?php 
// facebook variables 
$challenge = isset($_REQUEST['hub_challenge']) ? $_REQUEST['hub_challenge'] : ''; 
$verify_token = isset($_REQUEST['hub_verify_token']) ? $_REQUEST['hub_verify_token'] : ''; 
$fb_access_token = "myaccesstoken"; 

// 验证Webhook
if ($verify_token === "abc123") { 
    echo $challenge; 
    exit; // 验证阶段直接退出,避免后续代码执行
} 

// Process retrieved data from facebook webhook 
$data = json_decode(file_get_contents("php://input"),true); 

// 增加数据结构的安全判断,避免报错
if (!empty($data['entry']) && !empty($data['entry'][0]['changes'])) {
    foreach ($data['entry'][0]['changes'] as $change) {
        // 确认是leadgen事件
        if ($change['field'] === 'leadgen' && !empty($change['value']['leadgen_id'])) {
            $leadgen_id = $change['value']['leadgen_id'];
            error_log(print_r($leadgen_id, true));
        }
    }
}

// 必须返回200响应
http_response_code(200);
echo "OK";
?>

其他排查要点

  • HTTPS证书要求:你的Webhook端点必须使用受信任CA颁发的HTTPS证书(自签名证书无法通过Facebook的校验),可以用在线工具检测端点的SSL状态。
  • 权限与订阅确认:
    • 确保App已获得pages_show_list和leads_retrieval权限,且权限处于已批准状态(开发阶段需将测试页面/用户添加到App的测试对象中)。
    • 检查Webhook订阅的Page是否正确,且已勾选leadgen字段(在App Dashboard -> Webhooks -> 已订阅的Page -> Edit Subscriptions中确认)。
  • 测试表单关联:确认测试表单属于已订阅Webhook的那个Page,且表单状态为已发布(即使是测试表单,也需要关联正确的Page)。
  • 查看Facebook事件日志:在Page的设置 -> Webhooks -> Event Logs中,查看是否有事件发送记录,里面会显示具体的错误原因(比如请求超时、证书无效等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:09:13