2

我对 Facebook api 有一点问题。

我正在做一个非常简单的 FQL 请求来获取这样的页面流:

SELECT post_id, type, likes, comments FROM stream WHERE source_id = X

它工作得很好。但是,当我在可口可乐或星巴克等“大页面”上执行相同请求时,所有流帖子的“类型”、“点赞数”和“评论数”都是空的。

我真的不明白为什么。我正在考虑一个带有国家代码错误的“全球页面”,但我找不到这方面的信息。

任何的想法 ?

编辑:只需尝试另一个请求来获取页面全局子 ID,但看起来可口可乐和星巴克不使用全局页面系统。

starbucks?fields=global_brand_children.username,global_brand_parent_page

那么,知道为什么我的第一个请求在获取流内容时返回空信息吗?

4

1 回答 1

3

“大页面”没有错。只是“巨大的页面”有很多来自粉丝的帖子和分享。实际上,该stream表提供了页面的所有活动。

流活动的type时间将是null内容来自用户的时间。当它来自页面所有者时,它将是一个 int。请参阅https://developers.facebook.com/docs/reference/fql/stream/type上的字段说明。

您可能会得到 a nullas a的原因like count是您遇到了一个将can_likeorcan_comment字段设置为的帖子false。这些帖子不能被点赞或评论,因为它们出现在页面之外(即在用户时间线或特定网站上),并且它们的所有者不允许公开点赞或评论(即使公开可见)。如果您要在页面流中找到此类活动,是因为他们在消息或照片中标记了该页面


编辑以回答您的第一条评论。

问题:为什么以下查询不返回页面所有者的帖子:

SELECT actor_id, message 
  FROM stream 
 WHERE source_id = 40796308305 
      AND actor_id = 40796308305

让我们看看这个查询可以返回多少结果:

SELECT actor_id, message 
  FROM stream 
 WHERE source_id = 40796308305

好的,我们得到 17 个结果。为什么是17?我不知道。

When you add AND actor_id = 40796308305 to your request, it will checks among these 17 results which ones have 40796308305 as an actor_id.

Answer? None!

Because it only checks the 17 first results, you'll have to indicate a LIMIT:

SELECT actor_id, message 
  FROM stream 
 WHERE source_id = 40796308305 
      AND actor_id = 40796308305 
 LIMIT 100

And there you get what you want.

This is one of the Facebook API's subtlety. Documented here: https://developers.facebook.com/blog/post/478/

于 2013-03-09T11:21:26.017 回答