Невозможно отследить чейнджеры с помощью операции синхронизации * Card * API Google CardDAV - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь использовать операцию syn c -collection Google CardDAV API. Это не очень хорошо объяснено в документации . Но я думаю, что вот что они объяснили в этой документации.

Во-первых, найдите токен syn c из адресной книги с помощью операции propfind. Ниже приведен мой запрос, и я успешно получил токен syn c.

Запрос

Depth: 0
Content-Type: application/xml; charset=utf-8
<d:propfind xmlns:d="DAV:" xmlns:cs="http://calendarserver.org/ns/">
  <d:prop>
     <d:displayname />
     <cs:getctag />
     <d:sync-token />
  </d:prop>
</d:propfind>

Ответ

ncoding="UTF-8"?>
<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:ical="http://apple.com/ns/ical/">
    <d:response>
        <d:href>/carddav/v1/principals/some@email.com/lists/default/</d:href>
        <d:propstat>
            <d:status>HTTP/1.1 200 OK</d:status>
            <d:prop>
                <d:displayname>Address Book</d:displayname>
                <d:sync-token>https://www.googleapis.com/carddav/v1/synctoken/SOMEIDINHERE</d:sync-token>
                <cs:getctag>"23fq3fqefas.8"</cs:getctag>
            </d:prop>
        </d:propstat>
    </d:response>
</d:multistatus>

Затем мы должны выполнить операцию syn c -collection с меткой syn c, чтобы получить изменения из предыдущего состояния, но это не возвращает ни одного элемента, независимо от того, какое изменение я сделать в моем списке контактов на https://contacts.google.com/.

Запрос

<?xml version="1.0" encoding="utf-8" ?>
<d:sync-collection xmlns:d="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav">
  <d:sync-token>https://www.googleapis.com/carddav/v1/synctoken/SOMEIDINHERE</d:sync-token>
  <d:sync-level>1</d:sync-level>
  <d:prop>
     <d:displayname />
     <d:current-user-principal />
     <d:principal-URL/>
  </d:prop>
</d:sync-collection>

Ответ

<?xml version="1.0" encoding="UTF-8"?>
<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:card="urn:ietf:params:xml:ns:carddav" xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:ical="http://apple.com/ns/ical/">
    <d:sync-token>https://www.googleapis.com/carddav/v1/synctoken/SOMEIDINHERE </d:sync-token>

</d:multistatus>

Пожалуйста, дайте мне знать, что я делаю не так.

1 Ответ

0 голосов
/ 27 февраля 2020

В общем, нормальный режим работы - это выдача первой коллекции syn c с пустым токеном syn c (см. https://tools.ietf.org/html/rfc6578#section -3.8 ) и использование syn c - токен, возвращаемый в ответе на следующие запросы.

...