0

我目前正在尝试开发一个我只希望粉丝访问的 Facebook 应用程序。因此,为了检查用户是否喜欢我链接到游戏的粉丝页面,我使用了以下代码:

<?php
$our_page_id = 'page_id';
$user_is_fan = false;
$likes = $facebook->api( '/me/likes?fields=id' );
foreach( $likes['data'] as $page ) {
    if( $page['id'] === $our_page_id ) {
        $user_is_fan = true;
                break;
    }
}

echo "likes:" . $likes;
echo "fan:".$user_is_fan;?>

这是我通过文档生成的点赞按钮:

<div id="fb-root"></div>
    <script>(function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=14XXXX";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
    </script>
</div>
<div class="fb-like" data-href="http://www.facebook.com/pages/xx/xx?fref=ts" data-send="false" data-width="450" data-show-faces="true"></div>

我目前收到有关无效 OAuth 令牌的错误,但是当我删除检查 facebook 喜欢的部分时,它可以正常工作。另外,我尝试了 FB.Event.subscribe('edge.create') 函数来尝试在单击类似按钮时检查事件,但它没有显示警报。

早些时候,这就像一个魅力但是现在,无论我点击多少喜欢按钮,$user_is_fan 都会返回 false。我在这里做错了吗?还是我错误地执行了这个?

是否有另一种有效的方法来检查 Facebook 中的点赞数?请帮忙。注意:我使用的是 Facebook PHP SDK。

4

2 回答 2

2

您可以使用 fgl 查询来执行此操作。请参阅:http: //developers.facebook.com/docs/reference/fql/page_fan/。不要忘记设置user_likes permissions. 您还需要一个有效的 fanpageid 进行查询,请参阅:获取 Facebook 粉丝页面 ID

在下面的示例代码中:如果用户喜欢该页面$response应该包含 created_time 否则$response将为空。

示例

<?php
error_reporting(E_ALL);
ini_set('display_errors','on');
require 'facebook-php-sdk-master/src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => '***************',
  'secret' => '******************************',
));

$applicationurl = 'http://testdrive.nl/facebooklikes.php';

// Get User ID
$user = $facebook->getUser();

if(empty($user))
{
    $params = array(
  'scope' => 'user_likes',
  'redirect_uri' => $applicationurl
   );   

$loginUrl = $facebook->getLoginUrl($params);
header('Location: ' . $loginUrl ."\r\n");
exit;
}

$response = $facebook->api(array(
     'method' => 'fql.query',
     'query' =>'SELECT created_time FROM page_fan WHERE uid = '.$user.' AND page_id =  202225796470556' //minijoule
 ));

var_dump($response);

$response = $facebook->api(array(
     'method' => 'fql.query',
     'query' =>'SELECT created_time FROM page_fan WHERE uid = '.$user.' AND page_id =  418784251474680' //webvrouw.nl
 ));

var_dump($response);
于 2013-05-16T14:20:55.830 回答
0

现在,根据某人是否喜欢您的页面来限制应用程序或应用程序中的内容是违反 Facebook 的政策的。

user_likes不会出于控制应用程序或应用程序内容的目的授予该权限。

此外,FQL 现在已弃用,不应再用于新应用程序。

请参阅此处的公告:https ://developers.facebook.com/blog/post/2014/08/07/Graph-API-v2.1/

于 2014-08-19T16:00:41.510 回答