Nó nêu rõ trong authentication document:
App Deauthorization
Khi người dùng của ứng dụng của bạn loại bỏ nó trong Bảng điều khiển ứng dụng hoặc các khối ứng dụng trong News Feed, ứng dụng của bạn có thể được thông báo bằng cách chỉ định Deauthorize URL gọi lại trong Ứng dụng dành cho nhà phát triển. Trong khi xóa ứng dụng, chúng tôi sẽ gửi yêu cầu HTTP POST chứa một thông số duy nhất, signed_request, trong đó chứa id người dùng (UID) của người dùng vừa xóa ứng dụng của bạn. Bạn sẽ không nhận được mã thông báo truy cập của người dùng trong số yêu cầu này và tất cả người dùng hiện tại mã thông báo truy cập sẽ tự động bị hết hạn.
Vì vậy, bằng cách sử dụng chức năng signed_request
trên docuement riêng của mình:
<?php
function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
// check sig
$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, '-_', '+/'));
}
$result = parse_signed_request($_REQUEST['signed_request'],"APP_SECRET");
$myFile = "deauthorize.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $result["user_id"] . "\n");
fclose($fh);
?>
Vì vậy, tất cả các bạn cần làm là có được $result["user_id"]
truy vấn DB của bạn và loại bỏ các kỷ lục.
P.S: Tôi khuyên bạn nên thêm trường mới có tên active
và chỉ hủy kích hoạt người dùng thay vì xóa toàn bộ bản ghi.
EDIT:
Facebook sẽ KHÔNG chuyển hướng người dùng đến URL hủy cấp phép! nó sẽ ping nó chỉ:
Facebook ping URL này khi người dùng deauthorizes ứng dụng của bạn
Sẽ không mất nhiều thời gian để tìm hiểu hơn là viết câu hỏi tại đây. Tạo một trang gửi email nội dung của $ _REQUEST/$ _ GET/$ _ POST cho bạn. Đặt URL gọi lại của bạn. Ủy quyền sau đó hủy cấp quyền cho chính bạn. Kiểm tra email và bạn sẽ biết chính xác dữ liệu nào bạn có sẵn. –