无法检测Facebook的页面

时间:2012-03-26 10:41:05

标签: php facebook facebook-graph-api facebook-like facebook-fql

是否有任何Facebook设置或浏览器设置或防火墙或浏览器插件等可以阻止Facebook应用程序检查用户是否喜欢某个页面(用户已经允许访问基本信息btw)?我尝试了3种方法,但对于某些用户来说,检测失败(或有时失败)。以下是我测试的方法

FQL查询

public function getLikedUser($user_id, $page_id){
  $result = $this->facebookObject()->api(array(
    "method" => "fql.query",
    "query" => "SELECT uid FROM page_fan WHERE uid=$user_id AND page_id=$page_id"
  ));

  if(count($result)){
    return true;
  }else{
    return false;
  }
}

REST api

public function getLikedUser($user_id, $page_id){

  $like = $this->facebookObject()->api($user_id.'/likes/'.$page_id);

  if(!empty($like['data'])){
    return true;
  } else {
    return false;
  }
}

图谱API

public function getLikedUser($user_id, $page_id){
  $like = file_get_contents("https://graph.facebook.com/".$user_id."/likes/".$page_id."&access_token=".$this->facebookObject()->getAccessToken());
  $likeD = json_decode($like);  
  if(!empty($likeD->data)){
    return true;
  } else {
    return false;
  }
}

但有时他们失败了。任何人都知道为什么对某些用户,或者有时像检测这样的页面会失败?

1 个答案:

答案 0 :(得分:0)

page_fan表的文档中所述:

  

要阅读您需要的page_fan表

     
      
  • 任何有效的access_token如果是公开的(Facebook上的任何人都可以看到)。
  •   如果查询当前用户,则
  • user_likes 权限。
  •   查询用户的朋友时,
  • friends_likes 权限。
  •   
对于user

likes connection的行为方式相同。

您需要您的用户授予user_likes权限,以便能够检查用户是否喜欢特定页面(否则会出现您无法获得该信息的情况)。