1

我正在使用以下 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,即使在不喜欢使用页面选项卡之后也是如此。

4

1 回答 1

0

我使用Graph API Explorer查看 page_id 是否存在,它返回空数据。然后我尝试访问用户是粉丝的所有页面。我看到当前页面 id 在那里,它清楚地说明了图形 api 存在一些问题。

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

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

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();
于 2013-06-03T20:55:54.090 回答