資料刪除要求回呼

應用程式如需存取用戶資料,則必須為用戶提供要求刪除資料的方法。應用程式可以通過兩種方法來達到此要求:

  • 執行資料刪除要求回呼。
  • 為應用程式用戶提供包含明確指示的網址,當中說明他們可以如何使用第三方網站或工具來刪除自己的資料。此第三方網站可能是應用程式私隱政策的相關部分。

每當應用程式用戶移除應用程式或透過其 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. 在顯示的視窗中,點擊傳送要求以觸發回呼。