我使用clasic php facebook代码进行“喜欢”检测。我把它放在2个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次。
可能是什么问题?
答案 0 :(得分:0)
类似状态不再在新的应用中发送,并且在2014年11月之后不允许进行门控。
有关详细信息,请参阅此主题:signedRequest doesn't return if user has liked the page
答案 1 :(得分:0)
如果您创建的应用程序最近无法获取liked
属性或很久以前创建但从未使用过它,则可能无法接收该应用,因为该属性已被弃用API版本2.1
或更高版本 - 此处有关于此更改的更多内容:
https://developers.facebook.com/docs/apps/changelog#v2_1
&#39;喜欢&#39;属性将不再在“signed_request”中返回。今天之后创建的Page Tab应用程序的对象。从 2014年11月5日起,&#39;喜欢&#39;财产将永远返回 &#39;真正的&#39;无论该人是否喜欢该页面。