从全球主页获取 Facebook 主页的信息流



我的Facebook api有一个小问题。

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

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

效果很好。但是,当我在像可口可乐或星巴克这样的"大页面"上做同样的请求时,所有的流帖子都有一个空的"类型","喜欢计数"one_answers"评论计数"。

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

你知道吗?

编辑:只是尝试另一个请求获得页面全局子id,但看起来可口可乐和星巴克没有使用全局页面系统。

starbucks?fields=global_brand_children.username,global_brand_parent_page

所以,你知道为什么我的第一个请求返回空信息时,获得流内容吗?

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

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

你可能会得到null作为like count的原因是你遇到了一个can_likecan_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 ?我不知道。

当你将AND actor_id = 40796308305添加到你的请求时,它将检查这17个结果中哪些有40796308305作为actor_id

答案?没有一个!

因为它只检查前17个结果,所以您必须指定一个LIMIT:

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

在那里你得到你想要的。

这是Facebook API的微妙之处之一。文档如下:https://developers.facebook.com/blog/post/478/

最新更新