2013-04-10 3 views
2

Я создал проект и зарегистрировал его с помощью https://code.google.com/apis/console (Я выбрал «другой» тип приложения). Затем я получил «Идентификатор клиента» для установленных приложений.Google Calendar Api bad request 400 event over developer console

Затем я отправился на консоль и создал событие, и разрешил использовать oauth 2. https://developers.google.com/google-apps/calendar/v3/reference/events/insert Все работало нормально.

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

Content-Type: application/json 
Authorization: xxx 
X-JavaScript-User-Agent: Google APIs Explorer 

{ 
"end": { 
    "dateTime": "2013-1-16T10:00:00.000-07:00" 
}, 
"start": { 
    "dateTime": "2013-1-16T10:00:00.000-07:00" 
} 
} 

Response

200 OK 

- Show headers - 

{ 

"kind": "calendar#event", 
"etag": "\"WANTVF5ixxZ04U_VtQ0AZ3MbAlM/Z2NhbDAwMDAxMzY1NjU0MzAwNTk1MDAw\"", 
"id": "2nsuis19mkp2q0uef54tl5nk68", 
"status": "confirmed", 
"htmlLink": "https://www.google.com/calendar/event?eid=Mm5zdWlzMTlta3AycTB1ZWY1NHRsNW5rNjggaXZhbjEzMzEzM0Bt", 
"created": "2013-04-11T04:25:00.000Z", 
"updated": "2013-04-11T04:25:00.595Z", 
"creator": { 
    "email": "[email protected]", 
    "displayName": "ivan rozhcov", 
    "self": true 
}, 
"organizer": { 
    "email": "[email protected]", 
    "self": true 
}, 
"start": { 
    "dateTime": "2013-01-16T21:00:00+04:00" 
}, 
"end": { 
    "dateTime": "2013-01-16T21:00:00+04:00" 
}, 
"iCalUID": "[email protected]", 
"sequence": 0, 
"reminders": { 
    "useDefault": true 
} 
} 

Затем я скопировал идентификатор и обновил это событие. https://developers.google.com/google-apps/calendar/v3/reference/events/update обновление Первый раз я получил ответ 200.

PUT https://www.googleapis.com/calendar/v3/calendars/primary/events/2nsuis19mkp2q0uef54tl5nk68?key={YOUR_API_KEY} 

Content-Type: application/json 
Authorization: Bearer ya29.AHES6ZRmo6pdxj8pY4NmzdI1estRNB-v87XV7xQHgyhrWHk2rzs3Ke8 
X-JavaScript-User-Agent: Google APIs Explorer 

{ 
"end": { 
    "dateTime": "2013-1-16T10:00:00.000-07:00" 
}, 
"start": { 
    "dateTime": "2013-1-16T10:00:00.000-07:00" 
} 
} 

Но когда я попробовал это снова, у меня всегда было 400 ошибок, текст ошибки написан ниже.

https://developers.google.com/google-apps/calendar/v3/reference/events/update обновление

400 Bad Request 

cache-control: private, max-age=0 
content-encoding: gzip 
content-length: 123 
content-type: application/json; charset=UTF-8 
date: Wed, 10 Apr 2013 12:49:29 GMT 
expires: Wed, 10 Apr 2013 12:49:29 GMT 
server: GSE 

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "invalid", 
    "message": "Invalid Value" 
    } 
    ], 
    "code": 400, 
    "message": "Invalid Value" 
} 
} 

Может кто-нибудь объяснить, если это google.api ошибка, или, может быть, я ошибаюсь Somwhere?

Я судимо его с differret счета и ПК (Повсеместно Google Обозревателе API и библиотеки Python с таким же результатом)

Сегодня я попытался воспроизвести эту ошибку. Но сейчас все работает отлично. Я создал проблему в коде google http://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=3371&thanks=3371&ts=1365599378 Все еще без ответа.

Я думаю, что это была ошибка временного.

ответ

1

Я использовал патч вместо обновления, и теперь он отлично работает. Но не понимайте, почему обновление произошло в первый раз и не прошло второй и второй раз. Полная тайна.

3

400 почти всегда означает простую синтаксическую ошибку в URL-адресе авторизации. Наиболее распространенная причина заключается в том, что вы либо не смогли вывести URL-адрес из вашей области, либо перенаправили, либо, как альтернатива, с помощью URL-экранов с ним несколько раз.

+3

Я использую Google API Explorer,, таким образом, я не могу контролировать URL-ускользающей. – ivan133

0

Обнаружена такая же проблема при доступе к API календаря Google с помощью клиентской библиотеки API Google для Javascript. Это происходит, если я пытаюсь обновить дату начала события календаря. Обновление конечных данных без проблем. Очень странно.

К счастью, я смог исправить проблему, заменив обновление патчем.

1

Проверьте это: Google Calendar API - can only update event once и это: Google Calendar api v3 re-update issue

Порядковый номер должен быть увеличен при изменении даты/времени события, то есть причина, почему вы получаете 400 - Bad запрос.

Так я решил это с помощью java-клиентской библиотеки.

mGoogleCalendarEvent содержит обновленную информацию о событии.Во-первых, получить порядковый номер этого события от Google Календарь:

mGoogleCalendarEvent.setSequence(mService.events().get(mCalendarId,mGoogleCalendarEvent.getId()).execute().getSequence()); 

А затем выполнить обновление:

mService.events().update(mCalendarId, mGoogleCalendarEvent.getId(),mGoogleCalendarEvent).execute();