如何使用带有Hashtag的php的Multi FQL查询

时间:2013-06-18 12:48:21

标签: facebook facebook-fql fql.multiquery

我正在尝试使用#query1语法在第二个查询中使用第一个查询的结果。

E.g。

fql?q={"query1":"SELECT uid2 FROM friend WHERE uid1=me()","my name":"SELECT name FROM profile WHERE id IN (SELECT uid2 FROM #query1)"}

我可以看到这在https://developers.facebook.com/tools/explorer的fql查询模拟器中工作正常。

但是当我尝试通过PHP发送此查询时,我无法运行它。 代码:

$fql_multiquery_url = 'https://graph.facebook.com/'
    . 'fql?q={"query1":"SELECT+uid2+FROM+friend+WHERE+uid1=me()","my+name":"SELECT+name+FROM+profile+WHERE+id+IN+(SELECT+uid2+FROM+#query1)"'
    . '&access_token=' . $access_token;
  $fql_multiquery_result = file_get_contents($fql_multiquery_url);
  $fql_multiquery_obj = json_decode($fql_multiquery_result, true);

我认为#之前的+有一些问题。

1 个答案:

答案 0 :(得分:0)

首先,强制性责骂:您不应该使用file_get_contents()来查询Facebook API。使用SDK或cURL。

使用PHP,诀窍是你不应该手动编码任何东西。编写可读文本并使用PHP内部函数为您编码。

$queries = array(
      'query1' => 'SELECT uid2 FROM friend WHERE uid1=me()',
      'myname' => 'SELECT name FROM profile WHERE id IN (SELECT uid2 FROM #query1)'
      //^ spaces aren't allowed in FQL query names.
    );
$params = array(
       'q' => json_encode($queries),
       'access_token' => $access_token
);
$url = 'https://graph.facebook.com/fql?' . http_build_query($params);