0

这是此问题的扩展: Getting Facebook Events using fql

当没有为活动设置位置/地点时,我遇到了问题。

这是我正在使用的查询:

{\"events\":
    \"SELECT eid, name,description, start_time, end_time, pic_small,pic_big, eid,venue,location 
      from event WHERE eid in (SELECT eid FROM event_member WHERE uid = me() 
      and start_time > %s)\" ,
 \"locations\":
     \"select page_id,location from page where page_id IN 
     (select venue.id from #events)\" ,
  \"rsvpStatus\":
     \"select eid, rsvp_status from event_member where eid IN 
      (select eid from #events) AND uid = me()\" }

我的观察:当为此事件设置了位置时,场地属性是一个带有 id 属性的 json 对象。请参考下面的json

 {
          "eid": 34343434322,
          "name": "Another yo you",
          "description": "",
          "start_time": 1347699600,
          "end_time": 1347786000,
          "pic_small": "http:\/\/profile.ak.fbcdn.net\/static-ak\/rsrc.php\/v2\/yy\/r\/XcB-JGXohjk.png",
          "pic_big": "http:\/\/profile.ak.fbcdn.net\/static-ak\/rsrc.php\/v2\/yn\/r\/5uwzdFmIMKQ.png",
          "venue": {
            "id": 34243242
          },
          "location": "Airbiquity"
        }

当没有设置位置时,它是一个空数组。请参考下面的json。

{
          "eid": 441320552577649,
          "name": "Meeting",
          "description": "",
          "start_time": 1347491700,
          "end_time": 1347502500,
          "pic_small": "http:\/\/profile.ak.fbcdn.net\/static-ak\/rsrc.php\/v2\/yy\/r\/XcB-JGXohjk.png",
          "pic_big": "http:\/\/profile.ak.fbcdn.net\/static-ak\/rsrc.php\/v2\/yn\/r\/5uwzdFmIMKQ.png",
          "venue": [

          ],
          "location": null
        }

场地属性的类型发生了变化,这很奇怪。我是 GSON 来将此响应转换为 Java 对象,但由于场地结构出乎意料,它被抛出。有人可以帮我解决这个问题吗?

4

1 回答 1

1

Facebook 对场地的处理方式在去年 5 月发生了变化。API 返回了几种不同的情况,具体取决于创建事件的时间和方式。

  1. 返回已知场所的 id。
  2. 场地字段为空白,并返回任意位置字符串。
  3. Venue 包含有关活动地点的一系列信息,但没有 id。

不幸的是,您的脚本必须处理所有这些情况,并为 Facebook 工程师将来可能提出的任何情况做好准备。

于 2012-09-14T01:23:53.407 回答