在单个 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 - 发布多张照片

Facebook Graph API:如何获得在线朋友/或最后 X 分钟活跃

Facebook Graph API /me 请求

如何使用 Graph API 获取家乡的 facebook 好友列表?

Facebook Graph API,如何获取用户电子邮件?