我创建了项目并使用qazxsw poi注册了它(我选择了“其他”应用程序类型)。然后我获得了已安装应用程序的“客户端ID”。
然后我去控制台并创建了事件,并使用oauth 2. https://code.google.com/apis/console授权一切正常。
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"
}
}
然后我复制了id并更新了这个事件。 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
}
}
更新我第一次得到200回复。
https://developers.google.com/google-apps/calendar/v3/reference/events/update
但是当我再次尝试这个时,我总是得到400错误,错误文本写在下面。
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"
}
}
更新
https://developers.google.com/google-apps/calendar/v3/reference/events/update
任何人都可以解释,如果这是谷歌+ .api的错误,或者我可能在某处错了?
我从不同的帐户和PC尝试过(通过Google API资源管理器和python库,结果相同)
今天我试图重现那个bug。但是everring现在工作得很好。我在谷歌代码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"
}
}
中创建了一个问题仍然没有答案。
我认为这是暂时的错误。
400几乎总是意味着您的身份验证URL中存在简单的语法错误。最常见的原因是您未能通过网址转义范围或重定向,或者多次对其进行URL转义。
检查一下:http://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=3371&thanks=3371&ts=1365599378和这:Google Calendar API - can only update event once
当您更改事件的日期/时间时,需要增加序列号,这就是您获得400 - 错误请求的原因。
这就是我使用java客户端库解决它的方法。
mGoogleCalendarEvent包含有关事件的更新信息。首先,从GoogleCalendar获取此事件的序列号:
Google Calendar api v3 re-update issue
然后执行更新:
mGoogleCalendarEvent.setSequence(mService.events().get(mCalendarId,mGoogleCalendarEvent.getId()).execute().getSequence());
我使用补丁而不是更新,它现在工作正常。但是,不要真正理解为什么更新第一次成功并且第二次和其他时间失败。完全神秘。
使用适用于Javascript的Google API客户端库访问Google Calendar API时发现了完全相同的问题。如果我尝试更新日历事件的开始日期,就会发生这种情况。更新结束数据没有问题。真的很奇怪。
幸运的是,我能够通过用补丁替换更新来解决问题。