FQL不像显示页面那样是真的

时间:2013-05-29 11:21:40

标签: php api facebook-fql facebook-php-sdk

我正在使用以下fql来查找是否喜欢页面:

 $fql_query_url = 'https://graph.facebook.com/'
    . 'fql?q=SELECT+uid,page_id+FROM+page_fan+WHERE+uid=me()+AND+page_id=' . $pageId
    . '&access_token=' . $facebook->getAccessToken();

  $fql_query_result = file_get_contents($fql_query_url);

  $fql_query_obj = json_decode($fql_query_result, true);

  if($fql_query_obj['data'][0]['uid']!=''){

      $isFan = true;
//      echo "<h1> Is Fan </h1>";

  } else {
      $isFan = false;
  }

 //var_dump($isFan);

每次返回true时最后一行,即使在不喜欢使用页面标签后也是如此。

1 个答案:

答案 0 :(得分:0)

我使用Graph API Explorer来查明page_id是否存在,它返回了空数据。然后我试图访问用户风扇的所有页面。我看到当前的页面ID已存在,它清楚地解释了图api存在一些问题。

我的问题的一个解决方案是遍历所有page_id并检查当前是否存在page_id。

请记住,您必须先将page_id转换为float。要在循环中匹配它,因为当不适合int时,facebook返回id为float。

if($fql_query_obj['data'][$i]['page_id']==(float)$pageId) // page is liked :)

第二种方法是通过在引号中引用page_id进行查询,即

$fql_query_url = 'https://graph.facebook.com/'

. 'fql?q=SELECT+uid,page_id+FROM+page_fan+WHERE+uid=me()+AND+page_id=\'' . $pageId

. '\'&access_token=' . $facebook->getAccessToken();