應用程式如需存取用戶資料,則必須為用戶提供要求刪除資料的方法。應用程式可以通過兩種方法來達到此要求:
每當應用程式用戶移除應用程式或透過其 Facebook 帳戶設定移除曾與應用程式分享的個人資料(如電郵地址等)存取權時,系統便會發出資料刪除回呼。
這會產生一個附有已簽名要求的 POST,並會將之傳送至您的應用程式。這個簽名要求包含一個應用程式專屬編號,用於識別提出要求的用戶。如要查看關於如何剖析要求,以及已剖析要求結構的範例,參閱下一個部分。
如要回應用戶的要求,您需要使用我們提供的技術渠道,以告知用戶您已收到其數據刪除要求,並提供連結和確認號碼。此連結和確認號碼必須授權用戶存取有關其要求狀態的解釋,且內容必須簡單易明,包括任何拒絕刪除此等數據的合法理由(視乎管轄區和我們對與其陳述原因相關的政策之具體詮釋方式,理由的合法性定義會有所不同)。
如要剖析和回應要求,請執行「資料刪除要求」回呼。您的回呼必須使用安全 HTTPS 通訊協定,並且必須列於應用程式管理中心設定頁面中的資料刪除要求網址欄位。
您所執行的資料刪除要求回呼必須執行以下動作:
{ 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 遊戲平台登入主題中的使用簽署要求部分。
如要測試回呼,您需要: