我想检查用户是否是特定Facebook页面的粉丝,我已尝试多次使用FQL,但响应始终为null:
FB.api({
method: 'fql.query',
query: 'SELECT uid FROM page_fan WHERE uid=user_id AND page_id=page_id'
}, function(resp) {
if (resp.length) {
alert('A fan!')
} else {
alert('Not a fan!');
}
}
);
我尝试过用户表运行良好:
FB.api(
{
method: 'fql.query',
query: 'SELECT name FROM user WHERE uid=me()'
},
function(response) {
alert('Your name is ' + response[0].name);
}
);
我刚刚登记https://developers.facebook.com/docs/reference/fql/page_fan/。看来facebook不支持FQL,所以我该怎么办?
我非常感谢你的帮助。
更新 我刚试过Graph API解决方案,但结果是数组为null:
FB.api('/100005548217775/likes/329849167104448',function(response) {
if( response.data ) {
if( !isEmpty(response.data) )
alert('You are a fan!');
else
alert('Not a fan!');
} else {
alert('ERROR!');
}
});
答案 0 :(得分:2)
如果您没有v2.0应用程序,则根本不能使用FQL,因为它已被弃用。此外,您使用的是错误的method
参数,该参数也已弃用。
FQL的官方端点是
/fql?q={url_encoded_query}
其中{url_encoded_query}
是url编码的FQL查询。
我建议你跳过FQL,并使用标准的Graph API功能(这是未来证明):
/{user-id}/likes/{page-id}
请注意,您需要访问令牌中的user_likes
权限才能获得任何结果。
见
答案 1 :(得分:0)
我找到了答案:
FB.login(function(response){
if(response.status=='connected'){
FB.api('/me/likes/' + 216524221773305, function(api_response)
{
if(api_response.data.length > 0){
setLocation('<?php echo $this->getConnectUrl() ?>');
}else{
jQuery('#facebook-like-popup').show();
}
});
}
}, {scope: 'user_likes'});
有一件事让我感到困惑:当我只是喜欢粉丝页面时,检查结果仍然会返回Array[]
。 Facebook似乎没有立即更新数据。不确定我的想法是对的吗?
答案 2 :(得分:0)
这不会起作用,因为你需要来自facebook的user_likes权限,你可以尝试别的东西,让我们说你想知道用户喜欢的页面是
https://www.facebook.com/pg/Poulamecom-159391200925483/likes/?ref=page_internal
1)访问页面 2)查看源代码 3)在源代码中找到“likeStatus”,如果真的那么用户喜欢页面,如果为false则用户不喜欢该页面 4)“访问页面”可以通过脚本自动完成并检查是否likeStatus“:true或likeStatus”:false