如何正确使用谷歌日历API的Events.Insert命令?(How to use Google C

2019-09-17 18:16发布

所以,我一直在使用谷歌调用的API的REST方法。 我需要插入事件转化为特定的日历,其ID我有。 这是POST请求我送:

地址: https://www.googleapis.com/calendar/v3/calendars/ {} calendarID /事件

身体:

Authorization:  Bearer {access_token}
{
 "end": {
  "dateTime": "2012-08-30T12:30:00",
  "timeZone": "America/Chicago"
 },
 "start": {
  "dateTime": "2012-08-30T14:00:00",
  "timeZone": "America/Chicago"
 },
 "summary": "E E 306",
 "colorId": "9"
 "kind": "calendar#event"
}

这也是我不断收到回应:

{
 "error":{
  "errors":[
   {
    "domain":"calendar",
    "reason":"timeRangeEmpty",
    "message":"The specified time range is empty.",
    "locationType":"parameter",
    "location":"timeMax"
   }
  ],
  "code":400,
  "message":"The specified time range is empty."
 }
}

我不明白我可能是做错了。 我输入了所有必要的数据,而且它要求我为根本不存在的事件的参数。 我也无法找到任何文件,在那里对这个特殊的问题。 有谁看到我丢失的东西?

Answer 1:

在问这个问题之中,我面对伪称这么辛苦,我想我已经做了我自己的脑损伤。 事实证明,我之所以找不到在这个问题上的任何文件,是因为它是多么壮观傻。

这是给我之所以这样一个有趣的错误,是因为在复制粘贴的我在做测试,我翻转的开始和结束时间。 所以,我告诉谷歌日历进入之前就开始,一般不会结束得太好结束的事件。

长话短说 ,如果你得到一个错误,指的是“timeMax”参数,同时试图插入一个事件,检查你的开始和结束时间。



Answer 2:

该日期时间必须是在RFC3339如下所述:

https://developers.google.com/google-apps/calendar/v3/reference/events



Answer 3:

{
 "end": {
  "dateTime": "2014-04-01T10:00:00-06:00"
 },
 "start": {
  "dateTime": "2014-04-02T10:00:00-06:00"
 }


Answer 4:

比较开始和结束日期时间,开始总是小于结束。 也改变DateTime格式为 “2018-03-07T18:00:00 + 05:30”。

在iOS中,我使用

此代码为DATETIME格式:

let dateTimeFormatter = DateFormatter()
dateTimeFormatter = Locale(identifier: "en_US_POSIX")
dateTimeFormatter = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
dateTimeFormatter = TimeZone(secondsFromGMT: 0)
let dateTimeString = dateTimeFormatter.string(from: YOUR_DATE_TIME)

此代码为日期格式:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let dateString = dateFormatter.string(from: YOUR_DATE)

一个关键的,它的价值就足够了,剩下的两个键无需也就是说,你有“日期时间”,值为键,然后有没有必要“日期”和“的timeZone”键。 如果你想设置式“时区”这是可选的,但只有一个从“日期”和“日期时间”是不够的。



文章来源: How to use Google Calendar API's Events.Insert command properly?