从Facebook Open Graph API解码重复发生的事件?

时间:2017-07-16 17:46:00

标签: facebook api facebook-graph-api facebook-events

我正在尝试研究如何从Facebook Open Graph API获得更好的数据,因为它们似乎现在支持配置文件页面的重复事件,但似乎没有任何方法可以从他们的API中正确地获取它们返回开始日期作为事件运行的第一天,结束日期作为运行的最后一天。我的第一次尝试是简单地检查事件是否在同一天开始和结束并假设它们每周发生,但正如您从这个Facebook页面中看到的那样,它们实际上允许您将它们设置为在不同时间发生多天!即:周日中午12:00和周三下午4:00:

https://www.facebook.com/pg/hobbytownewportnews/events

JUL 18:  Micro FPV - Every Tuesday & Saturday (Jun 17 - Dec 16)
JUL 22: Gunpla Build Day - Every Saturday (Jun 17 - Dec 30)
JUL 16: RC Drifting - Every Wednesday & Sunday (Jun 18 - Dec 13)
JUL 20: Pizza & Plastics - Every Thursday (Jun 22 - Dec 28)

我正在使用此API获取事件:

https://developers.facebook.com/docs/graph-api/reference/page/events/

以下是使用API​​的示例API调用(但是,您需要自己的访问令牌来执行它):

https://developers.facebook.com/tools/explorer/145634995501895/?method=GET&path=hobbytownewportnews%2Fevents%3Ftime_filter%3Dupcoming%26fields%3Did%2Cname%2Cend_time%2Cstart_time&version=v2.9

以下是我们回复的回复。现在你可以看到的问题是开始和结束时间,并且没有数据表明事件是否重复发生,Facebook没有做任何事情来修复它们,因此它们作为单个即将发生的事件有意义。通过API返回的数据更多,但其余的只是描述性的,所以我把它留了出来。

{
  "data": [
    {
      "id": "272398049894766",
      "name": "Pizza & Plastics - Every Thursday",
      "end_time": "2017-12-28T20:00:00-0500",
      "start_time": "2017-06-22T16:00:00-0400"
    },
    {
      "id": "334856180266567",
      "name": "RC Drifting - Every Wednesday & Sunday",
      "end_time": "2017-12-13T20:00:00-0500",
      "start_time": "2017-06-18T12:00:00-0400"
    },
    {
      "id": "308995412882009",
      "name": "Gunpla Build Day - Every Saturday",
      "end_time": "2017-12-30T14:00:00-0500",
      "start_time": "2017-06-17T12:00:00-0400"
    },
    {
      "id": "1473270249392907",
      "name": "Micro FPV - Every Tuesday & Saturday",
      "end_time": "2017-12-16T18:00:00-0500",
      "start_time": "2017-06-17T10:00:00-0400"
    }
  ],
}

有什么想法吗?是否有不同的API调用来获取这些东西?问题是,我不能简单地假设任何跨越多天的事件都是一个反复发生的事件,因为你也可以把这样的事件放入多天这样的事件:

https://www.facebook.com/events/1854268061514839

并且从Open Graph API获得的响应将返回您期望的结果,开始日期和结束日期跨越整个日期,甚至从上午8点开始,到最后一天晚上8点结束。

{
  "data": [
    {
      "id": "1854268061514839",
      "name": "2017 ROAR off road electric 8th and 4wd SCT electric Nationals",
      "end_time": "2017-07-23T20:00:00-0700",
      "start_time": "2017-07-20T08:00:00-0700"
    }
  ],
}

2 个答案:

答案 0 :(得分:2)

您可以制作指定event_times参数的Facebook API图形请求,查询Facebook页面如下:

https://graph.facebook.com/v2.10/<pageId>/events?fields=start_time,end_time,event_times

其中pageId是Facebook页面ID。

否则您可以查询单个事件:

https://graph.facebook.com/v2.10/<eventId>?fields=start_time,end_time,event_times

其中eventId是Facebook事件ID。

答案 1 :(得分:1)

“event_times”=多实例事件的次数

将其添加到字段列表中,然后循环结果。