Facebook graph api 为依赖fql查询的in子句引用/转义jsonpath元素

Facebook graph api 为依赖fql查询的in子句引用/转义jsonpath元素,facebook-graph-api,facebook-fql,jsonpath,facebook-batch-request,Facebook Graph Api,Facebook Fql,Jsonpath,Facebook Batch Request,使用FacebookPHPSDK,我试图获得一个评论列表,列出别人在某人的墙上发表的每一篇文章的评论。我在批处理API请求中使用FQL,如下所示: $getStream = urlencode("method/fql.query?query=SELECT post_id, actor_id, target_id, source_id,viewer_id, message FROM stream WHERE app_id= '' and message != '' and source_id=

使用FacebookPHPSDK,我试图获得一个评论列表,列出别人在某人的墙上发表的每一篇文章的评论。我在批处理API请求中使用FQL,如下所示:

$getStream   = urlencode("method/fql.query?query=SELECT post_id, actor_id, target_id, source_id,viewer_id, message FROM stream WHERE app_id= '' and message != '' and source_id=$fbprofileId and target_id=$fbprofileId and is_hidden=0 limit 100");
$getComments = urlencode("method/fql.query?query=select object_id, post_id, fromid, time, text, id, likes, comments, user_likes, is_private from comment where post_id in({result=get-stream:$.*.post_id})");
$queries = array(
                     array('method'                   => 'POST',
                           'omit_response_on_success' => false,
                           'name'                     => 'get-stream',
                           'relative_url'             => $getStream),
                     array('method'                   => 'POST',
                           'omit_response_on_success' => false,
                           'name'                     => 'get-comments',
                           'relative_url'             => $getComments)
                );
return $this->fbApi->api('?batch='.json_encode($queries), 'POST');
我从fb得到以下回应:

 {"error_code":601,"error_msg":"Parser error: unexpected '_1831955838114' at position 63.","request_args":[{"key":"method","value":"fql_query"},{"key":"format","value":"json"},{"key":"_fb_batch_child_request","value":"1"},{"key":"query","value":"select user_id, object_id from like where post_id in(1216940586_1831955838114,1216940586_1831891396503,1216940586_1831423824814,1216940586_1828915522108,1216940586_1822006149378,1216940586_1820687356409,1216940586_1813971228510,1216940586_1809392594047,1216940586_1795412004541,1216940586_1795177518679)"},{"key":"_fb_url","value":"method\/fql.query"},{"key":"access_token","value":"AAAC02IZB..."}]}
显然,post_id需要被引用,事实上,在in子句中使用相同的查询fb graph api explorer和引用的post_id,我可以得到很好的结果


**由于post_ID是字符串(不是INT),如何在其周围加引号,使其成为相关批处理API FQL查询上下文中FQL IN子句的正确参数?**

很可能有点晚了,但作为替代方案,FQL api支持正确处理类型的批处理查询:

创建查询的JSON映射,并将它们一起发送:

https://graph.facebook.com/fql?q={
  "friends":"SELECT uid2 FROM friend WHERE uid1=me()",
  "with_birthdays":"SELECT uid, name FROM user WHERE uid IN (select uid2 from #friends) and birthday_date"
}&access_token=yourToken29873
显然是对这些查询进行编码(为了便于阅读,未编码)。我将看看是否可以在批处理API中找到解决方案,如果找到任何解决方案,我将进行编辑


(编辑:这里运气不好,抱歉。我已经尝试了很多次,但我要么没有得到错误和结果,要么是解析器错误)

这似乎就是解决方案:“{result=get stream:$.*.post_id}”

应该如此
$getComments=urlencode(“方法/fql.query?query=select object\u id,post\u id,fromid,time,text,id,likes,comments,user\u likes,是post\u id位于(“{result=get stream:$.*.post\u id}”)中的注释的私有部分)

谢谢-我不知道这个FQL功能-我要试一试!