批量请求中的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
答
我用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');
谢谢你的例子! – 2012-02-26 10:21:26
@Richard Barnett 有没有办法在一次调用中使用批量请求与fql查询图形API结果? – user1105951 2014-03-01 23:07:17
@Richard我将如何使用你最后一个使用PHP SDK的例子?谢谢。 – Ali 2014-04-08 11:44:55