找出用户是否喜欢某个页面

时间:2013-08-05 10:55:07

标签: php facebook

您好我正在使用以下内容检查用户是否喜欢我的应用:

问题是签名的请求在没有页面对象的情况下返回。我在哪里设置权限,以便返回完整的请求?

       require_once('facebook.php');

        $facebook = new Facebook(array(
            'appId'=> FB_APP_ID, // replace with your value
            'secret'=> FB_APP_SECRET // replace with your value
        ));
        $signedRequest = $facebook->getSignedRequest();
        var_dump($signedRequest);
        // Inspect the signed request
        if($signedRequest['page']['liked'] == 1){

           echo 'like';

        } else {

           echo 'no like';

        }
    }

1 个答案:

答案 0 :(得分:1)

页面仅在facebok页面上传递(如果应用程序已配置并添加为选项卡到粉丝页面),而不是在apps.facebook.com(画布)或任何域中。

另一方面,我在每个用户的应用程序上使用(最近更改,因此可能已过时)

// scope for user
// $facebook <- assuming this is facebook sdk object
// $params = array(
//    'scope' => 'user_likes' <- to get likes we have to require this
//);

function fanGate() {
    $likes = null;
    try {
        $likes = $facebook->api('/me/likes');
    } catch (Exception $e) {}
    $likeUs = false;
    if ($likes)
        foreach ($likes['data'] as $like) {
            if ($like['id'] == 'some id of page')
                $likeUs = true;
        }
    return $likeUs;
}

修改

根据documentation检查用户是否喜欢Fanpage或任何其他GraphAPI对象,您只需要user_likes然后

$arrResult = $facebook->api("/me/likes/${SOMEOBJECT_ID}")
// $arrResult = $facebook->api("/${USER_ID}/likes/${SOMEOBJECT_ID}");
if (empty($arrResult['data']))
    echo 'dont like';
else
    echo 'like';

仅仅召唤/me/likes会返回所有喜欢,但会change - 2013-10-02

  

/ USER_ID /喜欢默认更新目前,API会返回所有喜欢的内容   默认。迁移后,通过Graph获取用户的喜欢   API将一次返回25个结果。我们已经添加了分页   结果,以便您可以翻阅所有用户的喜欢。