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

Facebook 如何使用带有Hashtag的php多FQL查询,facebook,facebook-fql,fql.multiquery,Facebook,Facebook Fql,Fql.multiquery,我试图使用#query1语法在第二个查询中使用第一个查询的结果 例如 我可以看到,这在的fql查询模拟器中运行良好 但是当我试图通过PHP发送此查询时,我无法运行它。 代码: 我认为#之前的+有一些问题 首先,强制性的责骂:你不应该使用file\u get\u contents()来查询Facebook API。使用SDK或cURL 使用PHP,诀窍是不应该手动编码任何内容。编写可读文本并使用PHP内部函数为您编码 $queries = array( 'query1' => '

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

例如

我可以看到,这在的fql查询模拟器中运行良好

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


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

首先,强制性的责骂:你不应该使用
file\u get\u 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);

因此,您URL编码了一些特殊字符,如空格,但您保留了
#
原样-为什么?FB文档中显示了用+替换空格。我应该如何对#进行编码?
$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);
$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);