我遇到了与此帖子描述的相同问题:Google Calendar api v3 re-update issue。即,一旦我使用Google日历API(v3)创建事件并更新一次后,我就无法再更新该事件。当我尝试更新时,我会收到400-无效值响应。(FWIW我在PHP中工作)。根据上面提到的帖子提供的线索,我尝试使用ETag解决了这个问题(尽管我的理解有限)。基本上,在事件更新时,API会在其响应中返回一个ETag,我现在将其保存在数据库中。然后对于后续的(n > 1)更新,我从数据库中获取当前的ETag并将其包含在HTTP头中:
Content-Type: application/json
Authorization: OAuth [token]
If-Match: [etag]
以下是“更新条目”标题下的信息:http://code.google.com/apis/gdata/docs/2.0/reference.html#ResourceVersioning
顺便提一句,在上述谷歌参考文献中,If-Match标头如下所示:
If-Match: "S0wCTlpIIip7ImA0X0QI"
在etag周围加上双引号。我将etag以双引号的形式保存在数据库中,就像我在第一个更新响应中收到的一样。当使用curl_setopt/HTTPHEADER添加到头部时,我需要转义引号或其他内容吗?
尽管实现了这个etag If-Match功能,但仍然收到相同的400 - 无效值响应。我知道我的请求正文是有效的,因为第一个更新可以正常工作。只是有一些与后续更新相关的额外问题。
非常感谢任何帮助。