데이터 삭제 요청 콜백

사용자 데이터에 액세스하는 앱은 사용자가 데이터 삭제를 요청할 방법을 제공해야 합니다. 앱은 두 가지 방식 중 하나를 통해 이러한 요구 사항을 충족할 수 있습니다.

  • 데이터 삭제 요청 콜백을 구현합니다.
  • 앱 사용자에게 타사 웹사이트 또는 도구로 데이터를 삭제하는 방법에 대한 명시적 지침을 전달하는 URL을 제공합니다. 타사 웹사이트 관련 섹션은 앱의 개인정보처리방침에서 확인하실 수 있습니다.

데이터 삭제 콜백은 앱 사용자가 앱을 삭제하거나 Facebook 계정 설정에서 앱과 공유하는 데이터(예: 이메일 주소)에 대한 액세스 권한을 삭제할 때마다 호출됩니다.

그러면 앱으로 전송되는 서명된 요청을 포함하는 POST가 생성됩니다. 서명된 요청에는 요청을 보낸 사용자를 식별하는 앱 범위 ID가 포함됩니다. 요청을 해석하는 방법과 해석된 요청의 구조에 대한 예시는 다음 섹션을 참조하세요.

사용자가 데이터 삭제를 요청할 경우 Facebook에서 제공하는 기술적 수단을 통해 사용자의 데이터 삭제 요청을 수신하였음을 확인하고 링크와 확인 번호를 제공해야 합니다. 사용자가 링크와 확인 번호를 통해 요청 상태에 대한 인간이 읽을 수 있는 설명을 확인할 수 있어야 합니다. 여기에는 삭제 거절에 대한 타당한 근거가 포함되어야 합니다(타당성은 제시된 이유와 관련이 있기 때문에 관할 지역 및 Facebook 정책에 대한 사례별 해석에 따라 달라집니다).

콜백 구현

요청을 해석하고 여기에 응답하려면 '데이터 삭제 요청' 콜백을 구현해야 합니다. 콜백은 안전한 HTTPS 프로토콜을 사용해야 하고 앱 대시보드의 설정에서 데이터 삭제 요청 URL 필드에 등록되어야 합니다.

구현하는 데이터 삭제 요청 콜백은 다음을 수행해야 합니다.

  • 앱에 보관된 Facebook의 해당 사용자 데이터를 삭제하기 시작합니다.
  • URL이 포함된 JSON 응답이 반환되며, 이 URL을 통해 사용자가 삭제 요청의 상태와 영숫자 인증 코드를 확인할 수 있습니다. 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. 창이 열리면 요청 보내기를 클릭하여 콜백을 트리거합니다.