【问题标题】:Querying for past events using FQL使用 FQL 查询过去的事件
【发布时间】:2012-06-06 08:28:50
【问题描述】:

我正在尝试访问给定用户的过去事件。我正在使用以下 FQL 查询:SELECT eid, name, pic_square, start_time, end_time, location FROM event WHERE eid IN (SELECT eid FROM event_member WHERE uid = me() AND rsvp_status != 'declined') AND start_time < 1338974650 ORDER BY start_time DESC LIMIT 0,201338974650 应该是当前的 UNIX 时间戳)。这工作正常。然而,在我的例子中,facebook 只返回一组 4 个事件,而 facebook.com 显示更多 lot。这是为什么呢?

【问题讨论】:

    标签: events facebook-fql


    【解决方案1】:

    是的。 Facebook 严格限制 API 调用返回的过去项目的数量。当我访问我的一个页面时,我看到过去的事件页面上列出了超过 75 个事件。当我使用 FQL 或 Graph API 查询页面的事件时,我只得到 2 个事件。我的猜测是 Facebook 有一个单独的表,用于存储无法通过 API 获得的过去事件。

    顺便说一句,您可以通过将时间戳替换为 now() 来简化代码。

    【讨论】:

    • 这就是我的假设,但这很糟糕。我将尝试一种不同的、基于时间戳的方法。 now() 在我的情况下不起作用,因为我正在构建 start_time 时间戳,这样我总是能得到今天发生的事件,即使它们可能已经开始了。
    • 好吧,使用start_time 获取旧事件也不起作用。
    【解决方案2】:

    如果您通过传递 uid 来查询 event_member 表,您将获得用户创建的所有事件。如果您通过传递一个 eid 来查询表,它会为您提供事件的成员及其 rsvp 状态。

    编辑:尝试设置 start_date > 0 如here 所述,它应该向您显示所有事件。

    【讨论】:

    • 我主要查询event表,而不是event_member表。子查询SELECT eid FROM event_member WHERE uid = me() AND rsvp_status != 'declined' 只是在那里获取用户所属的所有事件,然后在我的主查询的WHERE eid IN 子句中使用。查询工作正常,我得到了我感兴趣的事件(不仅仅是用户创建的事件)。我只问 LIMIT 部分。
    • 所以你告诉我,通过查询 SELECT eid FROM event_member WHERE uid = me() AND rsvp_status != 'declined' 你不会只得到你创建的事件吗?你确定吗?因为这是我的情况...我只能获取我创建的事件。
    • 根据the documentation, event_member的第一行“包含一个活动的参与者列表...”
    • 是的,这就是我要告诉你的。如果您不相信我,请自行尝试查询或阅读文档。
    • 好的,好的,我虽然你想寻找另一个人被邀请但不是你或使用你的应用程序的人。 here我发现你可以设置start_date > 0来获取你被邀请的所有事件。
    猜你喜欢
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多