我已经创建了项目并使用https://code.google.com/apis/console进行了注册(我选择了“其他”应用程序类型)。然后,我获得了已安装应用程序的“客户端ID”。
然后我转到控制台,创建了事件,并使用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"
}
}响应
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": "ivan133133@gmail.com",
"displayName": "ivan rozhcov",
"self": true
},
"organizer": {
"email": "ivan133133@gmail.com",
"self": true
},
"start": {
"dateTime": "2013-01-16T21:00:00+04:00"
},
"end": {
"dateTime": "2013-01-16T21:00:00+04:00"
},
"iCalUID": "2nsuis19mkp2q0uef54tl5nk68@google.com",
"sequence": 0,
"reminders": {
"useDefault": true
}
}然后我复制了id并更新了这个事件。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的bug,或者我搞错了?
我尝试了不同的账号和PC (通过Google API,Explorer和python库,结果是一样的)
今天我试着重现那个bug。但everring现在运行得很好。我在google code http://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=3371&thanks=3371&ts=1365599378中创建了一个问题,仍然没有答案。
我想是临时错误。
发布于 2013-04-11 06:17:53
400几乎总是意味着auth URL中的一个简单语法错误。最常见的原因是,您不是失败的URL转义您的作用域或重定向,或者URL转义它不止一次。
发布于 2014-09-22 03:00:45
检查以下内容:Google Calendar API - can only update event once和Google Calendar api v3 re-update issue
当您更改事件的日期/时间时,需要增加序列号,这就是您收到400 - Bad request的原因。
这就是我用java客户端库解决这个问题的方法。
mGoogleCalendarEvent包含有关事件的更新信息。首先,从GoogleCalendar获取此事件的序列号:
mGoogleCalendarEvent.setSequence(mService.events().get(mCalendarId,mGoogleCalendarEvent.getId()).execute().getSequence());然后执行更新:
mService.events().update(mCalendarId, mGoogleCalendarEvent.getId(),mGoogleCalendarEvent).execute();发布于 2013-04-10 22:03:13
我使用的是补丁,而不是更新,现在它工作得很好。但我真的不明白为什么更新第一次成功,第二次失败,其他时候又失败了。完全是个谜。
https://stackoverflow.com/questions/15926676
复制相似问题