2

我正在使用 javascript api 运行以下 FQL 查询:

FB.api({
    method: 'fql.multiquery',
    queries: {
        'query1': 'SELECT source_id, actor_id, target_id, message, attachment, permalink, description, type, created_time FROM stream WHERE source_id IN (SELECT target_id FROM connection WHERE source_id=me() AND is_following=1) AND is_hidden = 0 AND type = 80 AND strpos(attachment.href, "youtu") >= 0 AND created_time < ' + unix_time,
        'query2': 'SELECT uid, name, profile_url, pic_square FROM user WHERE uid IN (SELECT actor_id FROM #query1)'
    }
}, 
function(response) { 
    console.log(response); 
};

它应该通过提供 unix_time 返回当前用户提要上的所有 youtube 视频并允许重复查询(在第一次运行时,这本质上是NOW(),否则它是最旧的状态时间);它确实如此,越野车:

  • 不设置 a LIMIT(在 query1 上):在 ~3 次查询之后,返回空结果
  • LIMIT 100或更多(在query1上):返回结果,但后续结果为空
  • 何时created_time < NOW()返回结果(在多个查询中);否则问题仍然存在(created_time <最早收到状态的时间)

不返回任何错误。我有 *read_stream* 权限。我试图找到一个相关的错误,但只找到了关于 FQL 的错误,没有返回所有状态。

4

1 回答 1

2

API 结果充其量是参差不齐的。根据我在 Facebook API 方面四年多的经验,我对这是如何发生的得出了自己的结论。这是我的要点:

  • 数据缓存不佳导致缓存过时、缓存未命中等。
  • 集群中的不同 Web 服务器与其他服务器不同步
  • 集群中的不同数据库服务器没有跟上同步
  • 毫无疑问,每个博客的获取结果的算法“不可靠”:http: //developers.facebook.com/blog/post/478/您要求 10 并且由于预过滤错误而返回 7。

我建议在你这边缓存来自 API 的数据,并在来自 Facebook 的新数据中保持联合,以便你的 UI 可以呈现更一致的数据。

于 2012-03-07T14:38:51.143 回答