Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Facebook用户取消该应用程序的授权_Php_Facebook - Fatal编程技术网

Php Facebook用户取消该应用程序的授权

Php Facebook用户取消该应用程序的授权,php,facebook,Php,Facebook,当用户从我的网站接受facebook应用程序时,我将用户详细信息和facebook详细信息(访问令牌)存储在数据库中 当他从facebook上删除我的应用程序时,我想从数据库中删除细节。如何做到这一点 我可以给出取消授权的回调url。如果有人删除应用程序,它将重定向到此页面。但是,wt应该是从db中删除数据的代码吗?我的意思是,当它重定向时,它会发布访问令牌的详细信息,这样我就可以从访问令牌中收费并删除该行。它在: 应用程序取消授权 当应用程序的用户在中删除它时 应用程序仪表板或在中阻止应用程序

当用户从我的网站接受facebook应用程序时,我将用户详细信息和facebook详细信息(访问令牌)存储在数据库中

当他从facebook上删除我的应用程序时,我想从数据库中删除细节。如何做到这一点


我可以给出取消授权的回调url。如果有人删除应用程序,它将重定向到此页面。但是,wt应该是从db中删除数据的代码吗?我的意思是,当它重定向时,它会发布访问令牌的详细信息,这样我就可以从访问令牌中收费并删除该行。

它在:

应用程序取消授权

当应用程序的用户在中删除它时 应用程序仪表板或在中阻止应用程序 在新闻提要中,您的应用程序可以 通过指定取消授权通知 开发人员应用程序中的回调URL。 在应用程序删除过程中,我们将发送 HTTP POST请求包含一个 参数,已签名的\u请求,其中 包含用户的用户id(UID) 刚刚删除了你的应用程序。你会 未在中接收用户访问令牌 此请求和所有现有用户 访问令牌将被自动删除 过期了

因此,在自己的文档中使用函数:

<?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);

?>

此代码不起作用,尽管当用户取消应用程序的授权时会调用此代码,但传递到函数中的唯一数据是“1”(在应用程序运行时使用测试用户和我自己的FB帐户进行测试)

文件内容(“test.txt”,“fbUserId.”。打印($请求['signed请求]))


在test.txt文件“1”

中,只需在此处写下问题,即可找到答案。制作一个页面,通过电子邮件向您发送$\u REQUEST/$\u GET/$\u POST的内容。将其设置为您的回调URL。授权,然后取消授权。查看电子邮件,你就会确切地知道你有哪些可用数据。这正是你所需要的。别忘了用实际的应用程序秘密替换应用程序秘密。