1

我正在使用 Facebook graph api 几天。我正在尝试提取用户的状态和转发的信息(如果有)。我可以使用fields=id,name,statuses查询轻松找到用户的状态。但我找不到任何关于重新分享的信息。我找到了一个 status sharedposts字段。但无法理解它实际上做了什么。谁能告诉我如何收集有关转发的信息(转发者、转发时间、转发位置)。我使用了 user_status 访问令牌。

4

3 回答 3

10

sharedposts字段适用于状态 ID 。例如,状态 id来自已被分享 4 次的TheKrazyCouponLady10151794781777494的状态更新。这个查询:

/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)

作为替代方案,您可能需要考虑查询用户的帖子。使用posts的优势在于,您可以取回该查询中每个帖子的共享计数。

/255919387493?fields=posts.fields(id,shares)

如果帖子的共享计数为零,那么显然不需要运行另一个查询来检索共享该帖子的用户。

使用帖子的缺点是帖子 ID 与状态 ID 略有不同。您会看到如下所示的 id:

255919387493_10151794781777494

该字符串的前半部分是帖子所有者的用户 ID。后半部分是实际的状态 id。如果要查询帖子的sharedposts字段,首先必须提取后半部分(状态 ID)并将其用于查询。

话虽如此,我突然想到,如果将statuses查询和sharedposts查询链接在一起,您实际上可以一次检索到您需要的所有信息。例如,像这样:

/255919387493?fields=statuses.fields(id,message,sharedposts.fields(from,created_time,place))

这将返回来自该用户的每个状态的状态 ID 和消息文本,以及用户详细信息,为每个共享这些状态的人创建时间和位置。

但是,即使使用分页,这也可能是一个相当慢的查询,所以我不确定这是否是个好主意。不过值得考虑。

于 2013-07-08T18:19:18.737 回答
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

此参考描述了多个 Graph API 节点共有的 /sharedposts 边。每个节点的结构和操作都是相同的。

此边缘表示原始对象在 Facebook 上共享的任何帖子。

于 2014-08-26T20:15:27.057 回答
0

如果帖子类型是照片 sharedposts 将返回空,因为对象与 postID 不同

/317380948302131_847979698575584                  => Object : 847979378575616

/317380948302131_847979698575584/sharedposts?fields=from,via  

ObjectID 将按预期工作

/847979378575616//sharedposts?fields=from,via   

如果对象是 shared_post 的唯一问题,它也会显示来自原始帖子对象的所有共享,并且不存在 via 节点。只是在一段时间内挣扎,为什么 APi 有时只返回共享帖子

于 2014-10-08T09:40:25.510 回答