Xóa dữ liệu người dùng

Các ứng dụng truy cập dữ liệu người dùng phải cung cấp một cách thức để người dùng yêu cầu xóa dữ liệu của mình. Có 2 cách để ứng dụng đáp ứng yêu cầu này:

  • Triển khai lệnh gọi lại yêu cầu xóa dữ liệu.
  • Cung cấp URL với hướng dẫn rõ ràng cho người dùng ứng dụng về cách xóa dữ liệu bằng trang web hoặc công cụ của bên thứ ba. Trang web của bên thứ ba có thể là phần phù hợp trong Chính sách quyền riêng tư của ứng dụng.

Nếu loại ứng dụng là Người tiêu dùng hoặc Trò chơi, bạn cần có lệnh gọi lại hoặc URL cho quy trình Xét duyệt ứng dụng và khi ở chế độ Chính thức.

Lệnh gọi lại xóa dữ liệu được gọi bất cứ khi nào người dùng xóa ứng dụng và yêu cầu bạn xóa dữ liệu của họ. Người dùng ứng dụng có thể thực hiện điều này bằng cách chuyển đến trang cá nhân Facebook của họ và nhấp vào nút Gửi yêu cầu trên trang Cài đặt & quyền riêng tư > Cài đặt > Ứng dụng và trang web.

Screenshot of app being removed via Apps and Websites page with Send Request button visible

Lệnh này sẽ tạo ra một lệnh POST kèm theo yêu cầu đã ký được gửi đến ứng dụng. Yêu cầu đã ký chứa ID người dùng trong ứng dụng để xác định người dùng đưa ra yêu cầu. Để xem ví dụ về cách phân tích cú pháp yêu cầu và cấu trúc của yêu cầu đã phân tích cú pháp, hãy xem phần sau.

Để phản hồi yêu cầu của người dùng, bạn phải xác nhận là đã nhận được yêu cầu xóa dữ liệu của người dùng thông qua các phương thức kỹ thuật mà chúng tôi cung cấp, đồng thời cung cấp liên kết và số xác nhận. Liên kết và số xác nhận phải cấp cho người dùng quyền truy cập vào nội dung giải thích về trạng thái của yêu cầu mà một người có thể đọc được, bao gồm bằng chứng hợp pháp cho bất kỳ lời từ chối xóa nào (trong đó tính hợp pháp sẽ khác nhau tùy theo khu vực pháp lý và cách diễn giải chính sách trong từng trường hợp khi có liên quan đến các lý do đã nêu).

Triển khai lệnh gọi lại

Để phân tích cú pháp và phản hồi yêu cầu, bạn phải triển khai lệnh gọi lại "yêu cầu xóa dữ liệu". Lệnh gọi lại phải sử dụng giao thức HTTPS an toàn và phải được liệt kê trong trường URL yêu cầu xóa dữ liệu trên trang Đăng nhập bằng Facebook > Cài đặt trong Bảng điều khiển ứng dụng.

Screenshot of Data Deletion Request URL field in the Facebook Login > Settings section of the App Dashboard

Lệnh gọi lại Yêu cầu xóa dữ liệu mà bạn triển khai phải thực hiện tác vụ sau:

  • Khởi tạo yêu cầu xóa bất kỳ dữ liệu nào của ứng dụng về người dùng khỏi Facebook.
  • Trả về phản hồi JSON chứa URL nơi người dùng có thể kiểm tra trạng thái của yêu cầu xóa và một mã xác nhận gồm chữ và số. Phản hồi JSON có dạng như sau:
    { url: '<url>', confirmation_code: '<code>' }

Không tuân thủ các yêu cầu này có thể dẫn đến việc xóa lệnh gọi lại hoặc vô hiệu hóa ứng dụng của bạn.

Bạn có thể triển khai lệnh gọi lại này bằng bất kỳ ngôn ngữ nào, nhưng mã sau là một ví dụ về lệnh gọi lại bằng ngôn ngữ 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, '-_', '+/'));
}
?>

Lệnh này sẽ tạo ra đối tượng JSON giống như sau, trong đó user_id là trường thông tin phù hợp cho lệnh gọi lại của bạn.

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

Để biết thêm thông tin về yêu cầu đã ký, hãy xem phần Sử dụng yêu cầu đã ký trong chủ đề Đăng nhập dành cho Game trên Facebook.

Thử nghiệm lệnh gọi lại

Cách thử nghiệm lệnh gọi lại:

  1. Đăng nhập vào ứng dụng của bạn qua phương thức Đăng nhập bằng Facebook.
  2. Chuyển đến tab cài đặt Ứng dụng và trang web trên trang cá nhân Facebook của bạn: https://www.facebook.com/settings?tab=applications
  3. Gỡ ứng dụng.
  4. Nhấp vào liên kết Xem ứng dụng và trang web đã gỡ.
  5. Trong cửa sổ bật lên, nhấp vào nút Xem ở bên phải của ứng dụng.
  6. Trong cửa sổ xuất hiện, nhấp vào Gửi yêu cầu để kích hoạt lệnh gọi lại.