需要存取用戶資料的應用程式必須提供方法,讓用戶能要求刪除其資料。您的應用程式可用下列兩種方法其中之一來滿足此要求:
每當應用程式用戶在其 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 遊戲平台登入主題中的使用簽署要求。
若要測試您的回呼: