Facebook Graph API - 来自批处理请求的同步响应
Posted
技术标签:
【中文标题】Facebook Graph API - 来自批处理请求的同步响应【英文标题】:Facebook Graph API - Sync response from batch request 【发布时间】: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 啊,我看到了引用,感谢您指出这一点。将确认并报告。 【参考方案1】:只保证执行顺序。但是响应的顺序将与您原始请求的顺序相对应,引用:“响应的顺序与请求中操作的顺序相对应,因此开发人员应相应地处理响应以确定哪些操作成功,哪些应该重试在随后的操作中。” - CBroe
如果有人查看此问题,CBroe 的回答是正确的 - 初始测试确认 Facebook 批处理响应以与批处理中发送的请求相同的顺序返回。
【讨论】:
以上是关于Facebook Graph API - 来自批处理请求的同步响应的主要内容,如果未能解决你的问题,请参考以下文章
我需要来自 Facebook Graph Api 的用户朋友的性别比例
Facebook Graph API:发布包含多个视频和照片的帖子
在API v2.9之后,为什么来自Facebook Graph / promotable_posts的响应为空