Facebook应用程序检测页面 - 工作正常

时间:2014-09-12 16:09:02

标签: php facebook facebook-like detect

我使用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次。

可能是什么问题?

2 个答案:

答案 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;无论该人是否喜欢该页面。