我目前正在尝试开发一款我只想让粉丝访问的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')函数来尝试在单击like按钮时检查事件,但它没有显示警报。
早些时候,这就像一个魅力,但现在,无论我点击多少按钮,$ user_is_fan返回false。我在这里做错了吗?还是我错误地实施了这个?
在Facebook中有没有一种不同且有效的方式来检查喜欢的内容?请帮忙。 注意:我正在使用Facebook PHP SDK。
答案 0 :(得分:2)
您可以使用fgl查询执行此操作。见:http://developers.facebook.com/docs/reference/fql/page_fan/。别忘了设置user_likes permissions
。
您还需要有效的fanpageid用于查询,请参阅:Get Facebook fan page 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);
答案 1 :(得分:0)
现在针对Facebook的政策,根据某人是否喜欢您的网页来控制应用内的应用或内容。
{@ 1}}权限不会被授予用于门控应用或应用内容的目的。
此外,FQL现已弃用,不应再用于新应用。
请参阅此处的公告:https://developers.facebook.com/blog/post/2014/08/07/Graph-API-v2.1/