我正在使用Facebook图形api几天。我试图提取用户的状态和转发的信息(如果有的话)。我可以使用 fields = id,name,statuses 查询轻松找到用户的状态。但我找不到任何有关重新分享的信息。我找到了一个状态 sharedposts 的字段。但无法理解它究竟做了什么。任何人都可以告诉我如何收集有关转发的信息(谁转发,转发,转发地点时)。我使用了user_status访问令牌。
答案 0 :(得分:10)
sharedposts 字段适用于状态ID。例如,状态标识10151794781777494
来自 TheKrazyCouponLady 的状态更新,该状态已共享4次。这个查询:
/10151794781777494?fields=sharedposts
将返回有关共享它的用户的所有信息。如果要将返回的字段限制为共享者的名称和ID,以及共享的时间和位置,则可以执行以下操作:
/10151794781777494?fields=sharedposts.fields(from,created_time,place)
虽然我预计大部分时间都不会有任何位置数据。
要首先查找状态ID,您只需查询特定用户的状态字段即可。再次,以 TheKrazyCouponLady (uid 255919387493)为例:
/255919387493?fields=statuses
只获取ID:
/255919387493?fields=statuses.fields(id)
作为替代方案,您可能需要考虑查询用户的帖子。使用帖子的好处是,您可以获取该查询中每个帖子的共享计数。
/255919387493?fields=posts.fields(id,shares)
如果帖子上的共享计数为零,那么显然不需要运行另一个查询来检索已共享该帖子的用户。
使用帖子的缺点是帖子ID与状态ID略有不同。你会看到看起来像这样的ID:
255919387493_10151794781777494
该字符串的前半部分是帖子所有者的用户ID。下半部分是实际状态ID。如果您想查询帖子的 sharedposts 字段,首先必须提取下半部分(状态ID)并将其用于查询。
话虽如此,如果您将状态查询和 sharedposts 查询链接在一起,您实际上可以一次性检索所需的所有信息。例如,像这样:
/255919387493?fields=statuses.fields(id,message,sharedposts.fields(from,created_time,place))
这将返回该用户的每个状态的状态ID和消息文本,以及用户详细信息,为共享每个状态的每个人创建时间和位置。
即使使用分页,这可能是一个相当慢的查询,所以我不确定这是不是一个好主意。值得考虑的是。
答案 1 :(得分:1)
根据API 2.1的新版本和此处的文档 https://developers.facebook.com/docs/graph-api/reference/v2.1/post 有一个名为" sharedposts"
的新边缘如此处所述https://developers.facebook.com/docs/graph-api/reference/v2.1/object/sharedposts
此参考描述了共同的/ sharedposts边缘 多个Graph API节点。结构和操作是相同的 对于每个节点。
此边表示共享原始对象的所有帖子 主页。
答案 2 :(得分:0)
如果帖子类型是照片,则共享邮件将返回空,因为该对象与postID不同
/317380948302131_847979698575584 => Object : 847979378575616
/317380948302131_847979698575584/sharedposts?fields=from,via
ObjectID将按预期工作
/847979378575616//sharedposts?fields=from,via
唯一的问题是,如果对象是shared_post,它将显示原始post对象的所有共享,并且不存在via节点。 只是在一段时间内挣扎为什么APi有时只返回共享信息