如何检查用户是否已经喜欢了Facebook页面?

8
我网站上有一个“喜欢”按钮(用于用户喜欢fb粉丝页面)。
如果用户点击喜欢,我会检查事件是否已被触发(事件订阅),然后向他们显示一些内容。
我真正需要帮助的是以下内容:
如果用户已登录Facebook并且已经喜欢该页面,则希望显示“您已经是粉丝!”并显示内容。 (而不是显示灰色的喜欢按钮)
或者
如果用户未登录Facebook并且单击喜欢按钮,则希望显示“您已经是粉丝!”并显示内容。 (而不是显示灰色的喜欢按钮)

编辑:各位,我在SO上研究了这个问题,并找到了类似的问题,但并不完全符合我的需求。也许我弄错了,但如果有人能提供一个链接来描述我的确切问题,那将比对问题进行-更有帮助。我已经检查了以下内容:
检查用户是否连接到Facebook,然后检查他是否喜欢页面
Facebook Like Box:如何检测用户是否已经喜欢该页面?
当页面已被用户LIKE时,Facebook LIKE按钮会隐藏
如何使用php / javascript检查用户是否已经喜欢该页面
检查用户是否已经喜欢粉丝页


我不是其中一个点踩的人,但如果你在问题中包含这个评论,并链接到一些你已经尝试过的问题并说明它们为什么无法解决你的问题,那么人们可能更愿意帮助你,这样他们就知道你已经尝试过自己解决了。 - Matt
2个回答

3
如果您使用Facebook PHP API,我已经想出了这个简短的函数,您可以将其包含在BaseFacebook类的base_facebook.php文件中。
public function userIsFan() {
    $sr = $this->getSignedRequest();
    if($sr && is_array($sr)){
        if(array_key_exists('page', $sr)){
            return $sr['page']['liked'] == 1;
        }
    }
    return 0;
}

4
最好扩展BaseFacebook类而不是修改它,否则下次在不同项目中使用此函数时,当你获取基类的新副本时会惊奇地发现它突然停止工作。或者,如果FB更改其基类并进行升级,你的自定义函数将全部丢失(请相信我,这种情况确实会发生...) - nealio82
这个不再起作用了。签名请求不再包含有关页面点赞的信息。 - lukyer

0

确保你正在使用xfbml, 这个对我有效

FB.Event.subscribe('auth.authResponseChange', function(response) {
        FB.api('/me/likes/[page_id]',
          function(response) {
              //console.log(response); - see what the response is on your console.
              if(response.data[0])
                //use script to display your content alert("Liked");
              else
                // just do nothing, display like button alert("Not yet liked");
          }
        );

    });

page_id 将是您页面的 ID 而不是名称,要查找 ID,只需访问 http://graph.facebook.com/[您的 Facebook 页面名称]

希望这能帮助未来的某个人。


1
这很可能需要user_likes扩展权限才能正常运行。 - ceejayoz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接