2013-06-16 3 views
6

Я пытаюсь выполнить простой бесплатный запрос в API календаря Google. У меня есть моя авторизация, все отлично работают, могут просматривать списки календарей пользователей и т. Д. Когда я пытаюсь отправить запрос на занятость, я получаю ошибку 400 (насколько я могу судить), а не подробности о том, что это не нравится.Ошибка API Google календаря 400

Это верно и в моем собственном коде, и когда я использую функцию API Google Calendar «Попробуйте».

Вот мой запрос (созданный с помощью попробовать виджет), и ответ: Запрос

POST https://www.googleapis.com/calendar/v3/freeBusy?key={YOUR_API_KEY} 

Content-Type: application/json 
Authorization: Bearer ya29.AHES6ZTr-2wksEvp0iGPTnHTirTIItib5WwxmSAySq1ghfI98Cz88kA 
X-JavaScript-User-Agent: Google APIs Explorer 

{ 
    "items": [ 
      { 
       "id": "[my calendar id goes here]@group.calendar.google.com" 
      } 
    ], 
    "timeMin": "2012-01-31T09:00:00", 
    "timeMax": "2012-01-31T10:00:00", 
    "timeZone": "GMT" 
} 

Response 


400 Bad Request 

cache-control: private, max-age=0 
content-encoding: gzip 
content-length: 122 
content-type: application/json; charset=UTF-8 
date: Sun, 16 Jun 2013 13:08:32 GMT 
expires: Sun, 16 Jun 2013 13:08:32 GMT 
server: GSE 

{ 
    "error": { 
    "errors": [ 
      { 
       "domain": "global", 
       "reason": "badRequest", 
       "message": "Bad Request" 
      } 
    ], 
    "code": 400, 
    "message": "Bad Request" 
    } 
} 

Я думаю, что это могло бы иметь что-то делать с DATETIME объектов/форматирования? Но я понятия не имею, что. Я бы очень признателен за помощь; Я стучал головой об этом в течение недели!

+0

использует «timeZone»: «UTC» или удаляет этот атрибут что-нибудь? Правильно ли скрыт ключ API в URL-адресе? см. http://stackoverflow.com/questions/15926676/google-calendar-api-bad-request-400-event-over-developer-console#comment22712451_15937488 –

+0

Я пробовал использовать UTC, удаляя свойство, включая смещение временной зоны в мин/макс. Ничего из этого ничего не изменило. Поскольку я использую Google API Explorer, нет никакого способа избежать чего-либо. – nilatti

ответ

14

Хорошо, я понял это, и я оставляю ответ для всех, кто ПОТЕРЯЛ ИХ УМ.

Несмотря на то, что говорит документация Google, о формате DateTime в этом случае, единственный формат, я мог бы приступить к работе был такой:

2008-03-07T17: 06: 02.000Z

так что YYYY -MM-DDTHH: MM: SS.MMMZ

Что такое Z? Я не знаю, но он должен быть там.

+0

Z для «Зулу»? Какие. . Ад. Но вы можете указать часовой пояс в отдельном свойстве, и это работает. – nilatti

+3

Z является сокращением для UTC ([Скоординированное всеобщее время] (http://en.wikipedia.org/wiki/Coordinated_Universal_Time)) часовой пояс. Очки за ваше упорство. – Bobulous

+0

Я подозревал, что это очень специфично, и вы это подтвердили! Спасибо –

0

Значение даты должно быть в формате UTC «TZ». Почти все CRM и открытый API принимают время в этом формате. Если вы конвертируете время datetime в UTC, используя основные функции языка/методы языка (например, C или Java), они возвращают экземпляр datetime в формате YYYY-MM-DDTHH: MM: SS.MMMZ.

+0

Фактически этот формат определяется стандартом [ISO 8601] (https://en.wikipedia.org/wiki/ISO_8601). 'Z' на конце короткий для' Zulu' и означает UTC. –

Смежные вопросы