当用户从我的网站接受Facebook应用程序时,我将用户详细信息和Facebook详细信息(访问令牌)存储在数据库中.
当他从facebook删除我的应用程序时,我想从数据库中删除详细信息.这该怎么做?
我可以给Deauthorize Callback url.如果有人删除了应用程序,它将重定向到此页面.但是,wt应该是这里从db中删除数据的代码吗?我的意思是,当它重定向时,它会发布访问令牌详细信息,以便我可以为访问令牌收费并删除该行.
ifa*_*our 13
在身份验证文档中明确说明:
应用程序取消授权
当应用程序的用户在App Dashboard中删除它或阻止News Feed中的应用程序时,可以通过在Developer App中指定Deauthorize Callback URL来通知您的应用程序.在移除应用程序期间,我们将发送一个HTTP POST请求,其中包含一个参数signed_request,其中包含刚删除应用程序的用户的用户ID(UID).您将不会在此请求中收到用户访问令牌,并且所有现有用户访问令牌将自动过期.
所以signed_request
在自己的docuement上使用该函数:
<?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);
?>
Run Code Online (Sandbox Code Playgroud)
所以你需要做的就是获取$result["user_id"]
查询数据库并删除记录.
PS:我建议添加一个名为的新字段active
,只是停用用户而不是一起删除记录.
编辑:
Facebook不会将用户重定向到取消授权网址!它只会ping它:
当用户取消对您的应用授权时,Facebook会ping此URL
归档时间: |
|
查看次数: |
6015 次 |
最近记录: |