Os apps que acessam dados dos usuários devem permitir que eles solicitem a exclusão das próprias informações. Seu app pode atender a esse requisito de duas formas:
O retorno de chamada de exclusão de dados é acionado sempre que um usuário do app usar as configurações da conta do Facebook para remover o acesso do app aos próprios dados que estão sendo compartilhados (como endereço de email).
Isso gera uma POST com uma solicitação assinada que é enviada ao app. A solicitação assinada contém um ID no escopo do app identificando o usuário que fez a solicitação. Para obter um exemplo de como analisar a solicitação e ver a estrutura da solicitação analisada, consulte a próxima seção.
Em resposta ao usuário, você deve confirmar o recebimento da solicitação de exclusão de dados usando os meios técnicos que oferecemos, além de fornecer um link e um número de confirmação. O link e o número de confirmação devem oferecer ao usuário acesso a uma explicação legível por humanos do status da solicitação, incluindo uma justificativa legítima para a recusa da exclusão (a legitimidade variará com base na jurisdição e na nossa interpretação caso a caso da nossa política em relação aos motivos declarados).
Para analisar e responder à solicitação, você precisa implementar um retorno de chamada "solicitação de exclusão de dados". O retorno de chamada deve usar o protocolo seguro HTTPS e estar listado no campo URL de solicitação de exclusão de dados nas configurações no Painel de Apps.
O retorno de chamada de solicitação de exclusão de dados implementado por você deve executar as seguintes ações:
{ url: '<url>', confirmation_code: '<code>' }
Não cumprir esses requisitos pode fazer com que seu retorno de chamado seja removido ou seu app seja desabilitado.
Você pode implementar esse retorno de chamada em qualquer linguagem, mas o código a seguir é um exemplo em 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, '-_', '+/')); } ?>
Isso produz um objeto JSON parecido com este, em que user_id
é o campo relevante para seu retorno de chamada.
{ "algorithm": "HMAC-SHA256", "expires": 1291840400, "issued_at": 1291836800, "user_id": "218471" }
Para saber mais sobre as solicitações assinadas, consulte Como usar uma solicitação assinada no tópico Login para Jogos no Facebook.
Para testar seu retorno de chamada: