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

Facebook数据删除回调提示“无法确认请求已接收”的解决咨询

解决Facebook数据删除回调“Unable to confirm request was received”问题

核心问题分析

你遇到的问题是Facebook无法确认请求已接收,且状态页deletion.php未被调用。结合代码来看,主要可能是状态页响应不符合规范、api.php返回的状态URL存在访问障碍,或者签名验证环节有未处理的错误导致响应中断。

具体修复步骤

1. 完善api.php的签名验证错误处理

当前parse_signed_request函数在签名验证失败时返回null,但后续代码直接调用$data["user_id"]会触发致命错误,导致脚本中断,无法返回正确响应给Facebook。需要增加错误拦截:

$data = parse_signed_request( $_POST[ "signed_request" ], $secret );
if (empty($data)) {
    header("HTTP/1.1 400 Bad Request");
    echo json_encode(["error" => "Invalid signed request"]);
    exit;
}
$openID = $data[ "user_id" ];

2. 修正deletion.php的响应格式

Facebook要求状态页必须返回标准的200 HTTP状态码+结构化响应内容,当前deletion.php直接输出200文本不符合规范,且PHP闭合标签后的多余字符可能导致响应格式错误。修改后的代码:

<?php   
    require( "PHPMailer/PHPMailerAutoload.php" );
    $mail = new PHPMailer;
    $mail->setLanguage( "zh", 'PHPMailer/language/phpmailer.lang-zh.php');
    $mail->CharSet = "UTF-8";
    $mail->isSMTP();
    $mail->Host = "smtp-mail.outlook.com";
    $mail->SMTPAuth = true;
    $mail->Username = "xxx@xxx.xx";
    $mail->Password = "xxxxxxxxxx";
    $mail->SMTPSecure = "tls";
    $mail->Port = 587;
    $mail->setFrom( "xxx@xxx.xxx", "xxx" );
    $mail->addAddress( "xxx@xxx.xxx" ); 
    $mail->Subject = "Facebook deletion";
    $mail->Body = $_SERVER[ "REQUEST_METHOD" ] . json_encode( $_REQUEST );
    $mail->send();

    // 返回符合要求的状态响应
    header("HTTP/1.1 200 OK");
    header("Content-Type: application/json");
    echo json_encode([
        "status" => "completed",
        "message" => "Data deletion request has been processed"
    ]);
    exit;
?>

注意:删除PHP闭合标签后的200文本,避免输出多余内容破坏响应结构。

3. 确保状态URL的可访问性

  • 直接通过浏览器访问https://xxx.xxx/deletion.php,确认返回200状态码和合法的JSON内容
  • 检查服务器防火墙、CDN是否拦截了Facebook的请求(需将Facebook官方IP段加入白名单)
  • 确保域名使用受信任的SSL证书(自签名证书会被Facebook拒绝)

4. 修正api.php的响应头设置

当前代码中Content-Encoding: utf-8是错误配置(utf-8是字符编码,不是内容编码),需移除该头:

// 移除此行:header( "Content-Encoding: utf-8" );
header( "Content-Type: application/json" );

5. 增加日志排查细节

在两个文件中添加日志,记录请求全量信息,方便定位问题:

// 在api.php开头添加
error_log("Facebook deletion callback received: " . json_encode($_POST));

// 在deletion.php开头添加
error_log("Facebook status page accessed: " . json_encode($_REQUEST));

验证流程

  1. 用Postman测试api.php,确认返回的JSON包含正确的url和confirmation_code字段
  2. 直接访问deletion.php,验证返回200状态码和合法的JSON响应
  3. 在Facebook开发者后台重新触发数据删除请求,查看日志和邮件记录

内容的提问来源于stack exchange,提问作者黃梓榆

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:51:06