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:
Lệnh gọi lại xóa dữ liệu được gọi bất cứ khi nào người dùng ứng dụng gỡ ứng dụng của bạn hoặc gỡ quyền truy cập vào dữ liệu hiện được chia sẻ với ứng dụng đó, chẳng hạn như địa chỉ email, trong phần Cài đặt thuộc tài khoản Facebook của người dùng đó.
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).
Để 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 của bạn 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 trong phần Cài đặt của Bảng điều khiển ứng dụng.
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:
{ 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.
Cách thử nghiệm lệnh gọi lại: