我在使用 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
那么,知道为什么我的第一个请求在获取流内容时返回空信息吗?
最佳答案
“大页面”没有任何问题。只是“大页面”有很多粉丝的帖子和分享。事实上,stream
表提供了页面的所有事件。
当内容来自用户时,流事件的 type
将为 null
。当它来自页面所有者时,它将是一个 int。请参阅 https://developers.facebook.com/docs/reference/fql/stream/ 上 type
字段的说明。
您可能会得到 null
作为 like 计数
的原因是您遇到了包含 can_like
或 的帖子>can_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
好的,we get 17 results 。为什么是17?我不知道。
当您将 AND actor_id = 40796308305
添加到请求中时,它会在这 17 个结果中检查哪些结果的 actor_id
为 40796308305
。
回答? None !
因为它只检查前 17 个结果,所以您必须指定 LIMIT
:
SELECT actor_id, message
FROM stream
WHERE source_id = 40796308305
AND actor_id = 40796308305
LIMIT 100
你就得到了what you want .
这是 Facebook API 的微妙之处之一。记录在这里:https://developers.facebook.com/blog/post/478/
关于facebook - 从全局页面获取 Facebook 页面的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15295076/