我使用classic php-facebook代码进行"类"检测。我把它放在两个fb应用程序上。其中一个正在工作,其中一个不是。在不起作用的页面中,我无法收到0或1值的"赞"键,该键将告诉我访问者是否喜欢该页面
<?php
if(isset($_REQUEST['signed_request']))
{
$app_secret = "...";
$data = parse_signed_request($_REQUEST["signed_request"], $app_secret);
print "<pre>";
print_r($data);
print "</pre>";
}
function parse_signed_request($signed_request, $secret)
{
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$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;
}
$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, '-_', '+/'));
}
?>
在一个不起作用的数组中,$data数组就像这个
Array
(
[algorithm] => HMAC-SHA256
[issued_at] => 111111
[page] => Array
(
[id] => 111111
[admin] => 1
)
[user] => Array
(
[country] => ro
[locale] => en_GB
[age] => Array
(
[min] => 21
)
)
)
"page"数组也必须有"like"键,但在本例中不存在。
两款应用程序在facebook开发者部分的设置相同,逐页比较超过10次。
问题出在哪里?
2014年11月之后,新应用程序中不再发送类似状态,也不允许类似门控。
有关更多信息,请参阅此线程:signedRequest不会';t如果用户喜欢页面,则返回
如果您创建的应用程序最近无法获取liked
属性,或者很久以前创建但从未使用过它,则它可能不会接收到它,因为该属性在API 2.1
或更高版本中已被弃用-这里有更多关于此更改的信息:
https://developers.facebook.com/docs/apps/changelog#v2_1
对于今天之后创建的页面选项卡应用程序,"点赞"属性将不再返回到"signed_request"对象中。从…起2014年11月5日起,"喜欢"的房产将永远回归"true",无论此人是否喜欢该页面。