Google日历V3 API问题



由于某些原因,我从2010年收到的事件在这个API调用中返回:

https://www.googleapis.com/calendar/v3/calendars/myEmailHere@gmail.com/events?maxResults=15&key={KEY HERE}

以下是响应中的一些JSON(项目数组内部(:

  {
     "kind":"calendar#event",
     "etag":""SaH0JPgxpZtQtKmztOIhZtDaAls/MA"",
     "id":"_64oj8e9m8d1kab9p8cs48b9k68sj8ba284q48b9k64o4cd1p6crj6cq370",
     "status":"confirmed",
     "htmlLink":"LINK HERE",
     "created":"2010-07-29T15:10:49.000Z",
     "updated":"1970-01-01T00:00:00.000Z",
     "summary":"Blood Drive",
     "creator":{
        "email":"myEmailHere@gmail.com",
        "displayName":"Elite Gamer",
        "self":true
     },
     "organizer":{
        "email":"myEmailHere@gmail.com",
        "displayName":"Elite Gamer",
        "self":true
     },
     "start":{
        "dateTime":"2010-08-23T14:00:00-05:00"
     },
     "end":{
        "dateTime":"2010-08-23T19:00:00-05:00"
     },
     "iCalUID":"11496CCE-9C8D-4294-BA4D-410F493733C8",
     "sequence":4
  }

到现在为止(2014年(,我一直都是晚上。API也表明它在20世纪进行了更新???。

我是不是搞砸了什么?有没有我遗漏的参数?我对谷歌的期望远不止于此。

还有一件事我觉得很奇怪。谷歌日历还返回两个不同的日期?!日期时间和日期。(取决于全天事件(。这应该发生吗?这使得开发人员必须检查响应中发送了哪一个,然后根据它解析日期。要么是这样,要么我的请求中缺少一个参数。

更新

环顾四周,我发现了这个:

http://www.google.com/calendar/feeds/myEmail@gmail.com/public/full?alt=json&max-results=15

这可以得到确切的信息,但格式不同。然而,这确实返回了正确的日期;但由于某些原因,日期的格式仍然不同。为什么会这样?我应该用哪一个?

出于某种原因,我正在获取2010年的事件,这些事件将在这个API调用中返回:

https://www.googleapis.com/calendar/v3/calendars/myEmailHere@gmail.com/events?>maxResults=15&key={key HERE}

在URL中使用timeMin参数查询。默认情况下,您不按日期进行筛选,所以您只会得到所有结果。筛选maxResults只是限制返回的事件数量。

https://www.googleapis.com/calendar/v3/calendars/myEmailHere@gmail.com/events?maxResults=15&timeMin=2014-01-01T01:01:01.000Z&key={key HERE}

到现在为止(2014年(,我一直都是晚上。API也表明它在20世纪进行了更新???。

有问题,因为该事件从未更新过。API中没有记载:https://developers.google.com/google-apps/calendar/v3/reference/events/list

还有一件事我觉得很奇怪。谷歌日历还返回两个不同的>日期?!日期时间和日期。(取决于全天事件(。这应该发生吗?>这使得开发人员必须检查响应中发送了哪一个,然后根据它解析>日期。要么是这样,要么我的请求中缺少一个参数。

是的,这是根据文件应该发生的。https://developers.google.com/google-apps/calendar/v3/reference/events#resource

如果这是一个全天事件,则日期的格式为"yyyy-mm-dd"。

时间,作为组合的日期-时间值(根据RFC 3339格式化(。除非在时区中明确指定时区,否则需要时区>偏移量。

就我自己而言,我一直在努力让一切顺利进行,所以我希望这能帮助你。

至于反序列化。我使用Newtonsoft.JSON在.NET中反序列化约会。首先创建一个根对象,因为您正在序列化事件列表。

public class RootObject
{
    public RootObject() {}
    //parameters you want to retrieve from the Calendar.
    public List<GoogleEvent> events {get;set;}
}
public class GoogleEvent
{
    public GoogleEvent(){}
    [JsonProperty("calendarId")] //specify which JSON parameter needs to be mapped
    public string Id {get;set;}
    //all parameters you need
}

然后使用NewtonSoft反序列化程序获取RootObject,该RootObject包含您检索到的Json中的所有事件。

NewtonSoft.Json.JsonConvert.DeserializeObject<RootObject>(JSONSTRING);

updatedcreated之前,这很奇怪。我以前没注意到。它至少应该和created一样,但它显示的是1970-01-01T00:00:00.000Z。这必须是一个unix时间,即0。谷歌做错了什么。但您的日历活动是在2010年创建的。您可以添加新的事件,看看它是否正确。

所有日期都是根据RFC 3339格式化的。您可以使用库来解析它们。

相关内容

  • 没有找到相关文章

最新更新