相关疑难解决方法(0)

Google Calendar API v3 - 更新活动

我正在使用google-api-ruby-client来处理Google Calendar API v3.

我面临的唯一问题是两次更新事件.

之前已经讨论过(Google Calendar api v3重新更新问题),但没有ruby客户端,也没有答案.

当我添加一个新事件时,我会得到一个ID和一个ETAG.我使用ID来更新事件,我得到一个新的ETAG.现在如果我尝试更新第二次,它不会更新并发送400错误消息"无效值".

我必须在第二次更新时发送最新的ETAG但我不确定如何在使用google-api-ruby-client时发送它.

这是代码:

    event = {
      'summary' => "Summary",
      'location' => "Location",
      'description' => "Description",
      'start' => {
      'dateTime' => @entry.from_date
     },
      'end' => {
        'dateTime' => @entry.to_date
      }
    }

    result = client.execute(:api_method => service.events.update,
                    :parameters => {'calendarId' => @entry.calendar.gid, 'eventId'=>@entry.gid},
                    :body => JSON.dump(event),
                    :headers => {'Content-Type' => 'application/json'})
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails google-calendar-api

7
推荐指数
1
解决办法
4522
查看次数

Google Calendar API - 只能更新一次事件

我遇到了与本文所述相同的问题:

Google Calendar api v3重新更新问题

也就是说,一旦我使用Google Calendar API(v3)创建活动并更新一次,我就无法再更新活动.当我尝试时,我得到一个400 - 无效的值响应.(FWIW我在PHP工作).

在我上面提到的帖子中提供了一个主导,我尝试使用etags解决问题(尽管我承认他们的工作方式是有限的).基本上,在事件更新时,API会在其响应中返回一个etag,我现在将其保存在我的数据库中.然后,对于后续(n> 1)更新,我从数据库中提取当前etag并将其包含在http标头中:

Content-Type:  application/json
Authorization:  OAuth [token]
If-Match: [etag]
Run Code Online (Sandbox Code Playgroud)

以下是"更新条目"标题下的信息:http://code.google.com/apis/gdata/docs/2.0/reference.html#ResourceVersioning

旁注:在上面的google ref中,If-Match标题显示为

If-Match: "S0wCTlpIIip7ImA0X0QI"
Run Code Online (Sandbox Code Playgroud)

在etag周围加上双引号.我用双引号将etags保存在数据库中,就像我在第一次更新响应中收到它们一样.使用curl_setopt/HTTPHEADER添加到标题时,是否需要转义引号或其他内容?

尽管实现了这个etag If-Match的东西,我仍然得到相同的400 - 无效的值响应.我知道我的请求主体是有效的,因为第一次更新工作正常.围绕后续更新还有一些其他问题.

任何帮助非常感谢.

curl http google-calendar-api google-api http-headers

4
推荐指数
1
解决办法
4138
查看次数