2012-06-05 20 views
14

Así que he estado usando el método REST para invocar la API de Google. Necesito insertar eventos en un calendario particular cuyo ID tengo. Esta es la solicitud POST que estoy enviando:Cómo utilizar los eventos de Google Calendar API. ¿Inserte el comando correctamente?

Dirección: https://www.googleapis.com/calendar/v3/calendars/ {calendarID}/eventos

cuerpo:

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" 
} 

Y esta es la respuesta me siguen dando:

{ 
"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." 
} 
} 

No entiendo lo que podría estar haciendo mal. Ingresé todos los datos necesarios y me pide un parámetro que ni siquiera existe para eventos. Tampoco puedo encontrar ninguna documentación sobre este problema en particular. ¿Alguien ve algo que me estoy perdiendo?

+0

FYI es posible que desee editar su token de acceso y tratar de evitar hacerlo público en el futuro. A pesar de que caducan después de una hora, alguien podría usar ese token para leer y potencialmente escribir en su calendario mientras todavía sea válido. –

+0

Vaya, supongo que es cierto. ¿Cuánto tiempo duran esas cosas nuevamente? – AnonymousJohn

+0

Tokens duran una hora. –

Respuesta

33

En medio de hacer esta pregunta, me miro con tanta fuerza que creo que me he hecho daño cerebral. Resultó que la razón por la que no pude encontrar ninguna documentación sobre este problema fue por lo espectacularmente tonto que fue.

La razón por la que me estaba dando un error tan gracioso fue porque en el proceso de copiar y pegar que estaba haciendo para probar, daba la vuelta al principio y al final. Por lo tanto, le estaba diciendo a los calendarios de Google que ingresen a un evento que finalizó antes de que comenzara, lo que generalmente no termina demasiado bien.

Cuenta larga corta, si aparece un error al hacer referencia al parámetro "timeMax" al intentar insertar un evento, verifique las horas de inicio y finalización.

+2

tenía exactamente el mismo problema, lol – Jason

+1

También cometí un error similar. Gracias por la explicación. –

+1

el mismo problema, lol. gracias por ayudar – Igor

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

comparar el inicio y el final fechaHora, empezar siempre es menor que fin. Cambie también el formato de fecha y hora como "2018-03-07T18: 00: 00 + 05: 30".

En IOS, utilizo

este código de formato 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) 

este código de formato de fecha:

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

Una clave y su valor es suficiente, permaneciendo dos teclas no es necesario, es decir, tiene la clave 'dateTime' con valor, entonces no hay necesidad de claves 'date' y 'timeZone'. Si desea configurar 'timezone' es opcional, pero solo uno de 'date' y 'dateTime' es suficiente.

Cuestiones relacionadas