数据删除请求回调

访问用户数据的应用必须为用户提供请求删除数据的方法。应用可以通过两种方法满足此项要求:

  • 实现数据删除请求回调。
  • 为应用用户提供含有明确说明的网址,介绍如何使用第三方网站或工具删除数据。第三方网站可能是应用程序隐私权政策的相关部分。

每当应用用户在 Facebook 帐户的“设置”中移除您的应用时,或移除当前与您应用所分享数据(如该用户的邮箱)的访问权时,系统就会调用数据删除回调。

系统会生成一个带有签名请求的 POST,并将其发送给您的应用。该签名请求包含一个应用范围编号,用于标识发出请求的用户。有关如何解析请求和已解析请求结构的示例,请查看以下部分。

响应用户请求时,您需要通过我们提供的技术手段来确认您已收到用户删除数据的请求,并提供链接和确认编号。用户必须能够通过此链接和确认编号查看有关其请求状态的说明,相关内容应简单易懂,若拒绝删除数据,则还应包括拒绝请求的合法理由(根据司法管辖区和我们对与其陈述原因相关政策的具体解读,对“合法”的界定会有所不同)。

实现回调

如要解析和响应请求,您需要实现“数据删除请求”回调。您的回调必须使用安全的 HTTPS 协议,且必须列于应用面板“设置”的数据删除请求网址字段中。

您所实现的数据删除请求回调必须执行以下操作:

  • 删除您应用从 Facebook 获得的任何用户相关数据。
  • 返回 JSON 响应,其中包含一个让用户查看删除请求状态的网址和一个字母数字验证码。JSON 响应的形式如下:
    { url: '<url>', confirmation_code: '<code>' }

如果不遵从这些要求,您的回调可能遭到移除,您的应用可能遭到禁用。

您可以使用任何语言来实现此回调,以下代码是使用 PHP 实现回调的示例。

<?php
header('Content-Type: application/json');

$signed_request = $_POST['signed_request'];
$data = parse_signed_request($signed_request);
$user_id = $data['user_id'];

// Start data deletion

$status_url = 'https://www.<your_website>.com/deletion?id=abc123'; // URL to track the deletion
$confirmation_code = 'abc123'; // unique code for the deletion request

$data = array(
  'url' => $status_url,
  'confirmation_code' => $confirmation_code
);
echo json_encode($data);

function parse_signed_request($signed_request) {
  list($encoded_sig, $payload) = explode('.', $signed_request, 2);

  $secret = "appsecret"; // Use your app secret here

  // decode the data
  $sig = base64_url_decode($encoded_sig);
  $data = json_decode(base64_url_decode($payload), true);

  // confirm the signature
  $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
  if ($sig !== $expected_sig) {
    error_log('Bad Signed JSON signature!');
    return null;
  }

  return $data;
}

function base64_url_decode($input) {
  return base64_decode(strtr($input, '-_', '+/'));
}
?>

这会产生如下所示的 JSON 对象,其中 user_id 是回调的相关字段。

{
   "algorithm": "HMAC-SHA256",
   "expires": 1291840400,
   "issued_at": 1291836800,
   "user_id": "218471"
}

如需了解更多有关签名请求的信息,请参阅 Facebook 游戏平台登录主题中的使用签名请求部分。

测试回调

要测试回调,请执行以下操作:

  1. 使用 Facebook 登录功能登录应用。
  2. 前往 Facebook 个人主页的应用和网站设置选项卡:https://www.facebook.com/settings?tab=applications
  3. 移除您的应用。
  4. 点击查看已移除的应用和网站链接。
  5. 在弹出窗口中,点击应用程序右侧的查看按钮。
  6. 在显示的窗口中,点击发送请求以触发回调。