在单个 Graph API 请求中获取 Facebook 发布所有反应计数
Posted
技术标签:
【中文标题】在单个 Graph API 请求中获取 Facebook 发布所有反应计数【英文标题】:Getting Facebook Post all Reactions Count in single Graph API request 【发布时间】:2016-04-28 06:11:07 【问题描述】:由于 Facebook 发布了新的反应NONE, LIKE, LOVE, WOW, HAHA, SAD, ANGRY 功能,但我无法弄清楚在单个图形 API 请求中获取所有反应计数。
有没有人想办法在单个请求中获得每个帖子的详细反应?
【问题讨论】:
【参考方案1】:@CBroe 引入的方法似乎正在使用 Multiple ID Read Requests。
?ids=7175346442_10153799389241443,7175346442_10153799470326443&fields=reactions.type(LOVE).limit(0).summary(total_count).as(reactions_love),reactions.type(WOW).limit(0).summary(total_count)。 (reactions_wow),reactions.type(HAHA).limit(0).summary(total_count).as(reactions_haha),...
截图来自Facebook Graph API Explorer:
一旦检索到一组帖子,就应该能够使用单个请求读取按类型分组的反应计数。注意,Multiple ID Read Request 模式中当前的 id 限制为 50。
【讨论】:
我可以知道 Graph API 中记录的点符号在哪里吗?谢谢! 但是一个独特的用户可以......通过发送许多 LOVE 反应来增加一个 total_count 吗?我发现这些 total_count 值是唯一用户的.. 如果用户发送 LOVE.. 爱情的 total_count 增加 +1,但如果同一个用户现在发送 ANGRY,则 Love 的 total_count 减少而 ANGRY 增加。 当我尝试使用这些字段来显示 FB 组/个人资料提要时,我收到了各种错误,例如反应_哈哈未知字段。我尝试删除它并看到其他错误,所以我无法获得组和个人资料提要的这些反应计数。组和个人资料还有其他方式吗?它仅适用于 FB 页面。 @omarojo 用户对一个帖子/评论只能有一个反应,你只能改变你的反应,不能做多个。 你也可以附加,likes.limit(0).summary(1)
来获得喜欢和反应【参考方案2】:
理论上可以将字段扩展与Field Aliases结合使用,如下所示:
?fields=reactions.type(LIKE).limit(0).summary(1).as(like),
reactions.type(WOW).limit(0).summary(1).as(wow),
reactions.type(SAD).limit(0).summary(1).as(sad),…
但在这方面似乎仍然存在一些错误;我在测试时经常收到“发生未知错误”; f.e.在上述查询中将 LIKE 的限制值替换为 1 会触发它……
【讨论】:
这很有帮助!但它仅适用于单个帖子..但正如 facebook 错误报告 unable to use aliasesin page/posts 目前它不支持页面帖子端点。【参考方案3】:只需将以下内容用作图形查询的一部分
fbpageid/posts?fields=created_time,story,message,shares,reactions.type(LIKE).limit(0).summary(1).as(like),reactions.type(LOVE).limit(0).summary(1).as(love),reactions.type(HAHA).limit(0).summary(1).as(haha),reactions.type(WOW).limit(0).summary(1).as(wow),reactions.type(SAD).limit(0).summary(1).as(sad),reactions.type(ANGRY).limit(0).summary(1).as(angry)&limit=10
因此,我将仅使用 1 个查询来获取帖子 ID、创建时间、故事、消息、分享计数、反应计数(目前为 6 个反应)。它也适用于 API v2.9
【讨论】:
【参考方案4】:如果您拥有read_insights
权限,您可以通过以下方式获得反馈或帖子的反应
fields=insights.metric(post_reactions_by_type_total).period(lifetime).as(post_reactions_by_type_total)
你会得到如下结果:
"name": "post_reactions_by_type_total",
"period": "lifetime",
"values": [
"value":
"like": 10,
"love": 2,
"wow": 3,
"haha": 1,
"sorry": 1,
"anger": 2
],
【讨论】:
我尝试了这种方法,但当我将值与 facebook 上的帖子进行比较时,似乎图形 api 总是返回给我更高的反应值?!【参考方案5】:我找到了一种通过 1 个请求实现此目的的方法:
GET /userId?fields=
posts.as(like)reactions.type(LIKE).limit(0).summary(true),
posts.as(love)reactions.type(LOVE).limit(0).summary(true),
posts.as(wow)reactions.type(WOW).limit(0).summary(true),
posts.as(haha)reactions.type(HAHA).limit(0).summary(true),
posts.as(sad)reactions.type(SAD).limit(0).summary(true),
posts.as(angry)reactions.type(ANGRY).limit(0).summary(true),
posts.as(thankful)reactions.type(THANKFUL).limit(0).summary(true)
这样您将收到 7 个帖子列表(每个反应一个)。示例:
"like":
"data": [<list of posts>]
,
"love":
"data": [<list of posts>]
,
"wow":
"data": [<list of posts>]
,
"haha":
"data": [<list of posts>]
,
"sad":
"data": [<list of posts>]
,
"angry":
"data": [<list of posts>]
,
"thankful":
"data": [<list of posts>]
,
"paging":
"previous": "...",
"next": "..."
,
"id": "<userId>"
【讨论】:
在fb graph api explorer上,它说:“PagePost对象上不存在posts字段。”以上是关于在单个 Graph API 请求中获取 Facebook 发布所有反应计数的主要内容,如果未能解决你的问题,请参考以下文章
Facebook Graph API:在一个请求中获取更大的图片
Facebook Graph API:如何获得在线朋友/或最后 X 分钟活跃