1

我正在将 Google CardDAV 与我的 webApplication 集成。当我对新的 vCard 进行 PUT 操作时,有时会遇到一个奇怪的问题。
如果 vCard 包含 UID 并且 UID 是 GUID,Google 会将 vCard UID 更改为 16 字符 UID。

例如:这是我原来的电子名片

BEGIN:VCARD
版本:3.0
N:Pinch;David;;;
FN:David Pinch修订
版:2013-01-09T09:26:34Z
UID: 6c34bedcf256408780d8ffe269ec2b3b
END:VCARD

所以我把它放到谷歌 CardDAV 中,放到当前的 url 中:

https://www.google.com/m8/carddav/principals/__uids__/myusername@gmail.com/lists/default/6c34bedcf256408780d8ffe269ec2b3b _

结果还可以,而且联系人确实是在 Google 通讯录上创建的。
但是:
如果“现在”我从同一个 URL 检索当前的 vCard,我有以下响应。

BEGIN:VCARD
版本:3.0
N:Pinch;David;;;
FN:David Pinch版本
:2013-01-09T09:44:25Z
UID: 716212e795884e43
END:VCARD

可以看到 UID 已经改变并从原来的传递过来了

UID:6c34bedcf256408780d8ffe269ec2b3b

UID:716212e795884e43

奇怪的是,如果我用以下请求检索卡

https://www.google.com/m8/carddav/principals/__uids__/myusername@gmail.com/lists/default/716212e795884e43 _

我有完全相同的响应,就像 vCard 引用了两个不同的路径 URL。

但是,当我从 CardDAV 检索联系人列表时,这将返回第二个 URL。
如果我没有创建带有 GUID 而是 16 字符 UID 的 vCard,似乎 Google 接受了这一点,但有时它会改变,所以我不能确定卡片的唯一性。
一种解决方法似乎是在每次 PUT 后重新下载 vCard,但这会导致我想避免的重要负载。

我对 iCloud CardDAV 使用相同的程序,但没有发生这种情况。
任何人都可以帮助我吗?

4

1 回答 1

0

当您将 vCard 放入 Google CardDAV 时,它将重新创建一个新的 vCard V3.0 并处理发布的原始数据,包括数据丢失和您描述的 UID/URI 路径更改。

除了 UID 更改 Google CardDAV 还有其他问题

在 2018 年仍然看到这些失败后,我的建议是:最好使用 Google 的 Contacts API 而不是 CardDAV 实现。

于 2018-03-26T18:24:41.650 回答