1

我在 facebook 上有一个页面,我在上面创建了许多活动。

我也在我的移动应用程序中使用这些事件。

但是现在图形 API 显示了我已经去过的事件。

如果您转到Graph API Explorer,您会看到它显示了 4 个事件。

但底部的最后 2 个事件是过去的事件。

我已经为他们添加了结束日期,所以这不是这里的问题。

怎么做才能使图形 API 不显示这两个事件?

我不想将它们从 facebook 中删除,而只是想隐藏它。

请指教。

4

1 回答 1

3

since您可以使用接受 unix 时间戳的查询参数将 facebook 返回的数据限制为仅显示在特定日期之后创建的事件。

因此,如果您想要在2012 年 10 月 8 日或任何其他日期之后创建的事件,您可以使用since查询参数进行调用,在这种情况下,unix 时间戳08 Oct 2012 00:00:00 GMT将为1349654400

现在,如果我们使用since查询参数和上面的 unix 时间戳进行调用,它将返回2012 年 10 月 8 日之后创建的所有事件。

这是使用查询参数在Graph API Explorer上进行的工作调用。since

如果上面的链接不起作用:

https://developers.facebook.com/tools/explorer?method=GET&path=jarnvags%2Fevents%3Fsince%3D1349654400

路径:jarnvags/events?since=1349654400

让我知道这是否对您有帮助:)

编辑: 这是使用FQL的方法:

SELECT eid, name, description, pic_big, start_time, end_time, location FROM event WHERE creator = 109341359096369 AND eid IN (SELECT eid FROM event_member WHERE uid = 109341359096369) AND start_time >= now() ORDER BY start_time

以下是您应该如何在 PHP 中执行此操作:

$pageID = '109341359096369';
$fql = 'SELECT eid, name, description, pic_big, start_time, end_time, location FROM event WHERE creator = ' . $pageID . ' AND eid IN (SELECT eid FROM event_member WHERE uid = ' . $pageID . ') AND start_time >= now() ORDER BY start_time';
$ret_obj = $facebook->api(array(
                           'method' => 'fql.query',
                           'query' => $fql,
                         ));
print_r($ret_obj);

查看event表格FQL 文档https ://developers.facebook.com/docs/reference/fql/event/

编辑2:只是想在评论中强调下面cpilko提出的观点,以便将来看到此答案的人很容易注意到它,您不必再将日期转换为时间戳,它也仅适用于日期(2012-10-08)。

这是Events Timezone Migration Note从 facebook events doc 中引用的内容:

事件时区迁移说明

从“Events Timezone”迁移开始,所有事件时间始终是 ISO-8601 格式的字符串;'date_format' 查询字符串修饰符不再有任何效果。现在返回以下格式,具体取决于事件的类型:

仅日期(例如,'2012-07-04'):有日期但还没有具体时间的事件。精确时间(例如,'2012-07-04T19:00:00-0700'):在特定时间点开始的事件,在与 UTC 的特定偏移量中。这是新的 Facebook 事件跟踪时间的方式,并允许用户查看不同时区的事件。本地时间(已弃用,例如“2012-07-04T19:00:00”):没有任何时区信息的遗留事件。此格式已弃用,但由于仍在系统中的遗留事件而继续返回。

于 2012-10-09T23:32:29.333 回答