【发布时间】:2017-07-11 17:30:43
【问题描述】:
我能够执行 Facebook Graph API 批处理请求来发布消息或链接到给定的 Facebook 页面,如下所述:https://developers.facebook.com/docs/graph-api/making-multiple-requests
批量调用示例(将 2 条消息发布到同一 Facebook 页面):
access_token=...&batch=[{"method":"POST","relative_url":"000000000000000/feed?fields=created_time,id,permalink_url","body":"message=page+test+post+4"},{"method":"POST","relative_url":"000000000000000/feed?fields=created_time,id,permalink_url","body":"message=Test2+status+update"}]&include_headers=false
上述请求的响应 sn-p:
[{
"code": 200,
"body": "{\"created_time\":\"2017-06-30T01:00:02+0000\",\"id\":\"000000000000000_157349X08600319X\",\"permalink_url\":\"https:\\\/\\\/www.facebook.com\\\/permalink.php?story_fbid=157349X09600319X&id=000000000000000\"}"
},
{
"code": 200,
"body": "{\"created_time\":\"2017-06-30T01:00:02+0000\",\"id\":\"000000000000000_157349X08600319X\",\"permalink_url\":\"https:\\\/\\\/www.facebook.com\\\/permalink.php?story_fbid=157349X08600319X&id=000000000000000\"}"
}]
我遇到的麻烦是尝试将响应映射或同步到上述示例中的父请求。如果 Graph API 允许为批处理中的每个请求发送一些任意 ID,然后返回相应的响应,那么我可以将其用于映射目的,但它没有或至少没有记录它。对于我的应用,我需要同步响应以将每个父请求的永久链接保存到数据库中。
我意识到除了 id、永久链接等之外,我还可以请求返回其他字段。但是,没有一个可用字段可以满足我映射所需的内容。 'message' 字段可能会起作用,但这似乎不是正确的方法。
我的另一个选择是执行单个请求,但我喜欢批处理请求的概念以及它在减少服务器调用次数方面带来的节省。
【问题讨论】:
-
我真的不明白问题出在哪里。您以与批处理中的单个请求相同的顺序获得响应 - 所以您所要做的就是记住您首先以什么顺序发送的数据......
-
@CBroe Facebook 文档指出,对于批量操作,订单无法保证。
-
只保证执行的顺序。但是响应的顺序会与你原始请求的顺序相对应,引用:“响应的顺序与请求中操作的顺序相对应,因此开发人员应该相应地处理响应以确定哪些操作成功,哪些操作成功应在后续操作中重试。”
-
@CBroe 啊,我看到了引用,感谢您指出这一点。将确认并报告。
标签: facebook facebook-graph-api