在粉丝专页上获取 Facebook 用户 ID 不再有效

发布于 2024-12-16 17:56:59 字数 1627 浏览 4 评论 0原文

此代码过去工作正常,但现在我的 $data 对象中缺少 user_id。我想到,从用户“喜欢”该页面的那一刻起,他就不再是匿名的,您可以使用此代码获取他的 ID。这是我一直使用的代码:

require_once 'assets/requests/facebook-php-sdk-dafef11/src/facebook.php';

$secret = "XXX";
$data = parse_signed_request($_REQUEST['signed_request'], $secret);


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);
 echo ' FUID: ', $fuid = $data['user_id'];    // NO USER ID HERE ANYMORE
 echo '<pre>' , var_dump($data), '</pre>';

 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, '-_', '+/'));
}

var_dumping the $data 对象显示:

array(4) {
  ["algorithm"]=>
  string(11) "HMAC-SHA256"
  ["issued_at"]=>
  int(1321524964)
  ["page"]=>
  array(3) {
    ["id"]=>
    string(15) "227488627318218"
    ["liked"]=>
    bool(true)
    ["admin"]=>
    bool(false)
  }
  ["user"]=>
  array(2) {
    ["locale"]=>
    string(5) "de_DE"
    ["age"]=>
    array(1) {
      ["min"]=>
      int(21)
    }
  }
}

Facebook 改变了什么吗?

This code used to work fine, but now the user_id is missing in my $data object. I had in mind, that from the moment the User 'Likes' the page, he isn't anonymous anymore and that you can fetch his ID using this code. This is the code I have always used:

require_once 'assets/requests/facebook-php-sdk-dafef11/src/facebook.php';

$secret = "XXX";
$data = parse_signed_request($_REQUEST['signed_request'], $secret);


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);
 echo ' FUID: ', $fuid = $data['user_id'];    // NO USER ID HERE ANYMORE
 echo '<pre>' , var_dump($data), '</pre>';

 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, '-_', '+/'));
}

var_dumping the $data object shows this:

array(4) {
  ["algorithm"]=>
  string(11) "HMAC-SHA256"
  ["issued_at"]=>
  int(1321524964)
  ["page"]=>
  array(3) {
    ["id"]=>
    string(15) "227488627318218"
    ["liked"]=>
    bool(true)
    ["admin"]=>
    bool(false)
  }
  ["user"]=>
  array(2) {
    ["locale"]=>
    string(5) "de_DE"
    ["age"]=>
    array(1) {
      ["min"]=>
      int(21)
    }
  }
}

Did facebook change something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千仐 2024-12-23 17:56:59

你在使用旧的 fb_sig 东西吗?我不会假装理解它的含义,但 fb_sig 前几天被删除了。他们说它在 10 月 1 日被删除,但我认为他们实际上在上周晚些时候删除了它:

http: //developers.facebook.com/blog/post/497/

Are you using the old fb_sig stuff? I'm not going to pretend to understand what it means, but fb_sig was removed the other day. They said it was removed on October 1st, but I think they actually removed it late last week:

http://developers.facebook.com/blog/post/497/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文