iCloud 日历删除事件请求不适用于 caldav

iCloud calendar Delete Event Request not working with caldav

我正在使用 caldav-client-v2.php 库从 iCloud 日历中读取日历事件,

GetEvents() 函数 returns 包含 ics 的日历数据数组 urletag,传递给 DoDELETERequest(href,etag) 用于删除事件, 这适用于 owncloud 日历,但是当我尝试为 iCloud 执行此操作时,它不会删除事件并且 returns 错误为“错误的实体标签”标签是什么像这样 FT=-@RU=5c162550-1ccc-4821-80d6-e2fab587c348@S=1685

我尝试将 5c162550-1ccc-4821-80d6-e2fab587c348 传递给函数,但我得到了同样的错误。 caldav 服务器 returns 是错误的 etag 还是我怎样才能让它工作?

ETag 被定义为带引号的字符串,请参阅 RFC 7232, section 2.3。它说:

ETag       = entity-tag

entity-tag = [ weak ] opaque-tag
weak       = %x57.2F ; "W/", case-sensitive
opaque-tag = DQUOTE *etagc DQUOTE
etagc      = %x21 / %x23-7E / obs-text
           ; VCHAR except double quotes, plus obs-text

这也是您从服务器接收 ETag 的方式。确保您发送的 ETag 与您收到的完全一样。特别是不要删除任何引号。

所以尝试传递 "FT=-@RU=5c162550-1ccc-4821-80d6-e2fab587c348@S=1685"