Я интегрирую Google CardDAV со своим веб-приложением. Иногда у меня возникает странная проблема, когда я делаю PUT новой vCard.
Если vCard содержит UID, а UID является GUID, Google изменяет UID vCard на 16-символьный UID.
например: Это моя оригинальная визитная карточка
НАЧАЛО:VCARD
ВЕРСИЯ: 3.0
N:Pinch;David;;;
FN:David Pinch
REV:2013-01-09T09:26:34Z
UID :6c34bedcf256408780d8ffe269ec2b3b
END:VCARD
Поэтому я ПОМЕЩАЮ это в Google CardDAV, в текущий URL:
https://www.google.com/m8/carddav/principals/__uids__/ [email protected]/lists/default/6c34bedcf256408780d8ffe269ec2b3b
Результат ок, и контакт действительно создается в Google Contacts.
НО:
если "сейчас" я получаю текущую визитную карточку с того же URL-адреса, я получаю следующий ответ.
НАЧАЛО:VCARD
ВЕРСИЯ: 3.0
N:Pinch;David;;;
FN:David Pinch
REV:2013-01-09T09:44:25Z
UID :716212e795884e43
КОНЕЦ:VCARD
Вы можете видеть, что UID изменился и перешел от исходного
UID:6c34bedcf256408780d8ffe269ec2b3b
To
UID: 716212e795884e43
Любопытно, если я получу карту со следующим запросом
https://www.google.com/m8/carddav/principals/__uids__/ [email protected]/lists/default/716212e795884e43
У меня точно такой же ответ, например, vCard ссылается на два разных URL-адреса пути.
Однако, когда я получаю список контактов из CardDAV, возвращается второй URL-адрес.
Если я создаю визитную карточку не с GUID, а с 16-значным UID, кажется, что Google принимает это, но иногда это меняется Тем не менее, поэтому я не могу быть уверен в уникальности карты.
Обходной путь, по-видимому, заключается в повторной загрузке vCard после каждого PUT, но это вызывает важную полезную нагрузку, которую я хотел избежать.
Я использую те же процедуры с iCloud CardDAV, и этого не происходит.
Кто-нибудь может мне помочь?