Aplikasi yang mengakses data pengguna harus menyediakan cara bagi pengguna untuk meminta agar data mereka dihapus. Aplikasi Anda dapat memenuhi persyaratan ini dengan salah satu dari dua cara berikut:
Panggilan balik penghapusan data dipanggil setiap kali pengguna aplikasi menghapus aplikasi Anda atau menghapus akses ke data mereka yang dibagikan dengan aplikasi Anda, seperti alamat email mereka, di Pengaturan akun Facebook mereka.
Tindakan ini membuat POST dengan permintaan bertanda tangan yang dikirimkan ke aplikasi Anda. Permintaan yang bertanda tangan tersebut berisi ID lingkup aplikasi yang mengidentifikasi pengguna yang melakukan permintaan. Untuk mengetahui contoh cara mem-parse permintaan dan struktur permintaan yang di-parse, lihat bagian berikut.
Untuk menanggapi permintaan pengguna, Anda sebaiknya memastikan telah menerima permintaan penghapusan data pengguna melalui sarana teknis yang kami sediakan, serta memberikan tautan dan nomor konfirmasi. Tautan dan nomor konfirmasi harus memberikan akses ke penjelasan status permintaan yang dapat dipahami manusia, termasuk pembenaran yang sah atas penolakan untuk menghapus (sah tersebut dapat berbeda, bergantung pada wilayah dan tafsiran kasus per kasus atas kebijakan kami sehubungan dengan alasan yang dinyatakan).
Untuk parse dan menanggapi permintaan, Anda harus menerapkan panggilan balik "permintaan penghapusan data". Panggilan balik Anda harus menggunakan protokol HTTPS yang aman dan harus terdaftar di kolom URL Permintaan Penghapusan Data di Pengaturan di Dasbor Aplikasi.
Panggilan balik Permintaan Penghapusan Data yang Anda terapkan harus melakukan hal berikut:
{ url: '<url>', confirmation_code: '<code>' }
Ketidakpatuhan terhadap persyaratan ini dapat mengakibatkan panggilan balik dihapus atau aplikasi dinonaktifkan.
Anda dapat menerapkan panggilan balik ini dalam bahasa apa pun, tetapi kode berikut adalah contoh panggilan balik dalam 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, '-_', '+/')); } ?>
Ini menghasilkan objek JSON yang terlihat seperti ini, dengan user_id
sebagai kolom yang relevan untuk panggilan balik.
{ "algorithm": "HMAC-SHA256", "expires": 1291840400, "issued_at": 1291836800, "user_id": "218471" }
Untuk informasi selengkapnya tentang permintaan yang bertanda tangan, lihat Menggunakan Permintaan yang Bertanda Tangan dalam topik Login untuk Game di Facebook.
Untuk menguji panggilan balik: