我的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_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
好的,我们得到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/