如何使用FQL检查用户是否是Facebook页面的粉丝?

时间:2015-09-01 09:52:36

标签: facebook facebook-fql facebook-page

我想检查用户是否是特定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!');
                    }
                }); 

3 个答案:

答案 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