如何使用 FQL 检查用户是否是 facebook 页面的粉丝?
How to check if user is a fan of facebook page by using FQL?
我想检查用户是否是特定 Facebook 页面的粉丝,我用 FQL 尝试了很多次,但响应始终为空:
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!');
}
}
);
我试过用户 table 是 运行 好:
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!');
}
});
如果您没有 v2.0 应用程序,则根本无法使用 FQL,因为它已被弃用。此外,您使用了错误的 method
参数,该参数也已弃用。
FQL 的官方端点是
/fql?q={url_encoded_query}
其中 {url_encoded_query}
是 url 编码的 FQL 查询。
我建议您跳过 FQL,并使用标准图形 API 功能(这是未来的证明):
/{user-id}/likes/{page-id}
请注意,您需要访问令牌中的 user_likes
权限才能获得任何结果。
见
我找到了答案:
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'});
有一件事让我很困惑,那就是:当我刚刚喜欢一个粉丝专页时,然后查看结果仍然return Array[]
。 Facebook 似乎不会立即更新数据。不确定我的想法是对的?
这也行不通,因为您需要来自 Facebook 的 user_likes 权限,您可以尝试其他方法,假设您想要了解用户是否喜欢的页面是
https://www.facebook.com/pg/Poulamecom-159391200925483/likes/?ref=page_internal
1)访问页面
2)查看源代码
3)在source里面找到"likeStatus",如果是true那么用户喜欢这个页面,如果是false那么用户不喜欢这个页面
4)"visit page" 可以通过脚本自动完成并检查 likeStatus":true 或 likeStatus":false
我想检查用户是否是特定 Facebook 页面的粉丝,我用 FQL 尝试了很多次,但响应始终为空:
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!');
}
}
);
我试过用户 table 是 运行 好:
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!');
}
});
如果您没有 v2.0 应用程序,则根本无法使用 FQL,因为它已被弃用。此外,您使用了错误的 method
参数,该参数也已弃用。
FQL 的官方端点是
/fql?q={url_encoded_query}
其中 {url_encoded_query}
是 url 编码的 FQL 查询。
我建议您跳过 FQL,并使用标准图形 API 功能(这是未来的证明):
/{user-id}/likes/{page-id}
请注意,您需要访问令牌中的 user_likes
权限才能获得任何结果。
见
我找到了答案:
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'});
有一件事让我很困惑,那就是:当我刚刚喜欢一个粉丝专页时,然后查看结果仍然return Array[]
。 Facebook 似乎不会立即更新数据。不确定我的想法是对的?
这也行不通,因为您需要来自 Facebook 的 user_likes 权限,您可以尝试其他方法,假设您想要了解用户是否喜欢的页面是
https://www.facebook.com/pg/Poulamecom-159391200925483/likes/?ref=page_internal
1)访问页面 2)查看源代码 3)在source里面找到"likeStatus",如果是true那么用户喜欢这个页面,如果是false那么用户不喜欢这个页面 4)"visit page" 可以通过脚本自动完成并检查 likeStatus":true 或 likeStatus":false