Google CardDAV меняет UID vCard
Я интегрирую Google CardDAV с моим веб-приложением. Иногда у меня возникает странная проблема, когда я делаю PUT новой vCard.
Если vCard содержит UID, а UID является GUID, Google заменяет UID vCard на 16-символьный UID.
например: это моя оригинальная визитная карточка
НАЧАТЬ:VCARD
Версия: 3.0
N: Pinch, Дэвид;;;
FN: Дэвид Пинч
REV: 2013-01-09T09: 26: 34Z
UID:6c34bedcf256408780d8ffe269ec2b3b
END:VCARD
Поэтому я помещаю это в Google CardDAV, в текущий URL:
https://www.google.com/m8/carddav/principals/__uids__/myusername@gmail.com/lists/default/6c34bedcf256408780d8ffe269ec2b3b
Результат в порядке, и контакт действительно создан в Контактах Google.
НО:
если "сейчас", я получаю текущую vCard с того же URL, у меня следующий ответ.
НАЧАТЬ:VCARD
Версия: 3.0
N: Pinch, Дэвид;;;
FN: Дэвид Пинч
REV: 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.
Если я не создаю vCard с GUID, но с 16-символьным UID, кажется, что Google принимает это, но иногда это меняется Однако, поэтому я не могу быть уверен в уникальности карты.
Обходное решение, по-видимому, заключается в повторной загрузке vCard после каждого PUT, но это вызывает полезную нагрузку, которой я хотел избежать.
Я использую те же процедуры с iCloud CardDAV, но этого не происходит.
Кто-нибудь может мне помочь?
1 ответ
Когда вы кладете vCard в Google CardDAV, он воссоздает новую vCard V3.0 и удаляет отправленные исходные данные, включая потерю данных и изменения пути UID / URI, которые вы описываете.
Другое, то изменение UID Google CardDAV имеет другие проблемы
- Потери данных
- Отказ от действительных vCards
Медленность (10-20 с на операцию записи)
Подробности в следующей статье стресс-теста Google CardDAV: https://evertpot.com/google-carddav-issues/
Мой совет после того, как я все еще видел эти сбои в 2018 году: лучше использовать Google Contacts API, а не реализацию CardDAV.