谷歌日历Api错误请求400事件通过开发人员控制台

问题描述 投票:2回答:4

我创建了项目并使用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" } } 中创建了一个问题仍然没有答案。

我认为这是暂时的错误。

google-calendar-api google-oauth
4个回答
3
投票

400几乎总是意味着您的身份验证URL中存在简单的语法错误。最常见的原因是您未能通过网址转义范围或重定向,或者多次对其进行URL转义。


2
投票

检查一下: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());

1
投票

我使用补丁而不是更新,它现在工作正常。但是,不要真正理解为什么更新第一次成功并且第二次和其他时间失败。完全神秘。


0
投票

使用适用于Javascript的Google API客户端库访问Google Calendar API时发现了完全相同的问题。如果我尝试更新日历事件的开始日期,就会发生这种情况。更新结束数据没有问题。真的很奇怪。

幸运的是,我能够通过用补丁替换更新来解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.