首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开发人员控制台上的Google Calendar Api bad request 400事件

开发人员控制台上的Google Calendar Api bad request 400事件
EN

Stack Overflow用户
提问于 2013-04-10 21:04:27
回答 4查看 9K关注 0票数 2

我已经创建了项目并使用https://code.google.com/apis/console进行了注册(我选择了“其他”应用程序类型)。然后,我获得了已安装应用程序的“客户端ID”。

然后我转到控制台,创建了事件,并使用oauth 2进行了授权。https://developers.google.com/google-apps/calendar/v3/reference/events/insert一切正常。

代码语言:javascript
复制
    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"
 }
}

响应

代码语言:javascript
复制
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个响应。

代码语言:javascript
复制
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更新

代码语言:javascript
复制
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中创建了一个问题,仍然没有答案。

我想是临时错误。

EN

回答 4

Stack Overflow用户

发布于 2013-04-11 06:17:53

400几乎总是意味着auth URL中的一个简单语法错误。最常见的原因是,您不是失败的URL转义您的作用域或重定向,或者URL转义它不止一次。

票数 3
EN

Stack Overflow用户

发布于 2014-09-22 03:00:45

检查以下内容:Google Calendar API - can only update event onceGoogle Calendar api v3 re-update issue

当您更改事件的日期/时间时,需要增加序列号,这就是您收到400 - Bad request的原因。

这就是我用java客户端库解决这个问题的方法。

mGoogleCalendarEvent包含有关事件的更新信息。首先,从GoogleCalendar获取此事件的序列号:

代码语言:javascript
复制
mGoogleCalendarEvent.setSequence(mService.events().get(mCalendarId,mGoogleCalendarEvent.getId()).execute().getSequence());

然后执行更新:

代码语言:javascript
复制
mService.events().update(mCalendarId, mGoogleCalendarEvent.getId(),mGoogleCalendarEvent).execute();
票数 2
EN

Stack Overflow用户

发布于 2013-04-10 22:03:13

我使用的是补丁,而不是更新,现在它工作得很好。但我真的不明白为什么更新第一次成功,第二次失败,其他时候又失败了。完全是个谜。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15926676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档