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.

Другие вопросы по тегам