批量请求中的FQL多查询

问题描述:

我可以批量请求中使用FQL多查询吗?我还没有找到谷歌的例子。批量请求中的FQL多查询

我运行此查询

[{\"method\":\"GET\", 
\"relative_url\":\"fql?q= 
    {\"posts\":\"SELECT post_id, actor_id, source_id, target_id, message, created_time FROM stream WHERE source_id = ... LIMIT 0, 10\"}\, 
    {\"users\":\"SELECT uid, name FROM users WHERE uid IN (SELECT actor_id FROM #posts) LIMIT 0, 10\"} 
\"}] 

但在回答我得到:

HttpResponse: 400: {"error":{"message":"batch parameter must be a JSON array","type":"GraphBatchException"}} 

Batching feature返回此消息,当您提交批处理大小1.例如

curl -k -F 'access_token=...' \ 
    -F 'batch=[{"method":"GET","relative_url":"me"}]' https://graph.facebook.com 

给出了相同的错误,而

curl -k -F 'access_token=...' \ 
    -F 'batch=[{"method":"GET","relative_url":"me"}, \ 
    {"method":"GET","relative_url":"me"}]' https://graph.facebook.com 

按预期工作。

对我来说,以下工作:

curl -k -F 'access_token=...' \ 
    -F 'batch=[{"method":"POST","relative_url":"method/fql.multiquery?queries={\"q1\":\"SELECT uid, rsvp_status FROM event_member WHERE eid=199886676776200\",\"q2\":\"SELECT name, url, pic FROM profile WHERE id IN (SELECT uid FROM #q1)\"}"}, \ 
    {"method":"GET","relative_url":"me"}]' https://graph.facebook.com 
+0

谢谢你的例子! – 2012-02-26 10:21:26

+0

@Richard Barnett 有没有办法在一次调用中使用批量请求与fql查询图形API结果? – user1105951 2014-03-01 23:07:17

+0

@Richard我将如何使用你最后一个使用PHP SDK的例子?谢谢。 – Ali 2014-04-08 11:44:55

我用PHP SDK来构建这种请求。以下是从特定用户的朋友的墙上提取给定用户的帖子的示例。

$req = array('method' => 'POST', 
     'relative_url'=>"method/fql.multiquery?queries={ 
     \"q1\":\"SELECT+post_id,actor_id,source_id,message,comment_info.comment_count,created_time,likes+FROM+stream+WHERE+actor_id=me()+AND+source_id=$id+AND+message!=''+limit+100\", 
     \"q2\":\"SELECT+id,post_id,fromid,text,time,likes,user_likes+FROM+comment+WHERE+post_id+IN+(SELECT+post_id+FROM+#q1)\", 
     \"q3\":\"SELECT+name,uid+FROM+user+WHERE+uid+IN+(SELECT+fromid+FROM+#q2)\"}"); 


$requests[] = $req; 

$batch_result = $facebook->api('/?batch='.urlencode(json_encode($requests)), 'POST');