【问题标题】:How to Determine if Facebook User 'Likes' a Certain Page如何确定 Facebook 用户是否“喜欢”某个页面
【发布时间】:2011-01-16 03:44:59
【问题描述】:

是否有任何方法可以确定 Facebook 用户是否“喜欢”具有 Facebook 当前提供的 API 的某个页面?

更新

一段时间以来,我一直试图通过 PHP 图形 API 使用这段代码来实现它。

$fbconfig['appid'] = '***';
$fbconfig['api'] = '***';
$fbconfig['secret'] = '***';

try {
    include_once "facebook.php";
} catch(Exception $o) {
    echo '<pre>';
    print_r($o);
    echo '</pre>';
}

$facebook = new Facebook(array(
  'appId'  => $fbconfig['appid'],
  'secret' => $fbconfig['secret'],
  'cookie' => true,
));

$session = $facebook->getSession();
$me = null;

if ($session) {
    try {
        $uid = $facebook->getUser();
        $me = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        d($e);
    }
}

if($me) {
    try {
        $likes = $facebook->api('/me/likes');
    } catch(Exception $o) {
        d($o);
    }
}

但是,会话始终为空,即使我已登录。

显然,上述代码仅适用于 Facebook Connect“Canvas”应用程序,我通过 AJAX 调用我的服务器从 Facebook“页面”上的 FBML 选项卡调用此代码。

我对所有 Facebook 开发术语都不是很熟悉。

在我的情况下如何获得当前用户的“喜欢”?

【问题讨论】:

    标签: facebook facebook-graph-api fbml fbjs


    【解决方案1】:

    有一种方法可以在不请求许可且不使用任何 API 的情况下做到这一点。

    如果你有 PHP:

    <?php
    $signed_request = $_REQUEST["signed_request"];
    
    list($encoded_sig, $payload) = explode('.', $signed_request, 2);
    
    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
    
    $app_data = isset($data["app_data"]) ? $data["app_data"] : '';
    $_REQUEST["fb_page_id"] = $data["page"]["id"];
    $access_admin = $data["page"]["admin"] == 1;
    $has_liked = $data["page"]["liked"] == 1;
    ?>
    

    您可以使用 $has_liked 来包装您的粉丝特定内容

    <?php if($has_liked) : ?>
    fan-specifc
    <?php else : ?>
    for non-fans only
    <?php endif; ?>
    

    替换

    <fb:visible-to-connection>
    fan-specific content
    <fb:else>
    for non-fans only
    </fb:else>
    </fb:visible-to-connection>
    

    它非常有用和方便,因为请求许可是一种关闭。

    【讨论】:

    • 如果其他人遇到 signed_request 参数无法通过的问题,请尝试更改您的 Page Tab URL 或 Canvas URL 以指向特定文件,例如。而不是将其设置为example.com/app,而是将其设置为example.com/app/index.php
    【解决方案2】:

    如果您使用的是图形 API,那么提要中有一个喜欢对象,其中包含喜欢该特定帖子/提要项目的用户的 ID。

    您还可以使用 FQL api 触发查询。

    【讨论】:

      【解决方案3】:

      尝试使用 FQL。查看此页面,它可以让您测试 FQL 调用。 http://developers.facebook.com/docs/reference/rest/fql.query

      SELECT user_id FROM like WHERE object_id="fb_id"

      但是将 fb_id 替换为你想知道有多少人喜欢的对象的 id。

      【讨论】:

        【解决方案4】:

        要获得用户喜欢,您需要user_likes 权限。
        只需将权限添加到您的fb:login-button perms 属性,下次用户登录时,他将被要求授予您的应用程序对新权限的访问权限。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-28
          • 1970-01-01
          • 1970-01-01
          • 2013-08-14
          • 2011-11-15
          相关资源
          最近更新 更多