0

嗨,我正在使用以下内容来检查用户是否喜欢我的应用:

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

       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';

        }
    }
4

1 回答 1

1

页面仅在 Facebook 页面上传递(如果应用程序已配置并作为选项卡添加到粉丝页面),而不是在 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;
}

编辑

根据文档检查用户是否喜欢 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返回所有喜欢,但它会改变 - 2013-10-02

/USER_ID/likes 默认更新 目前,API 默认返回所有赞。迁移后,通过 Graph API 获取用户的赞一次将返回 25 个结果。我们为结果添加了分页功能,因此您可以分页查看所有用户的喜欢。

于 2013-08-05T11:02:52.183 回答