Przewodnik dla programistów interfejsu CalDAV API

CalDAV to rozszerzenie WebDAV, które zapewnia klientom dostęp do informacje z kalendarza na zdalnym serwerze.

Firma Google udostępnia interfejs CalDAV, który umożliwia wyświetlanie kalendarzy i zarządzanie nimi przy użyciu protokołu CalDAV.

Specyfikacja

W przypadku każdej z tych specyfikacji obsługa protokołu CalDAV Google jest następująca:

  • rfc4918: rozszerzenia HTTP do tworzenia i obsługi wersji w sieci (WebDAV)
    • Obsługuje metody HTTP GET, PUT, HEAD, DELETE, POST, OPTIONS, PROPFIND i PROPPATCH.
    • Nie obsługuje metod HTTP LOCK, UNLOCK, COPY, MOVE ani MKCOL lub nagłówek If* (z wyjątkiem If-Match).
    • Nie obsługuje dowolnych (zdefiniowanych przez użytkownika) właściwości WebDAV.
    • Nie obsługuje kontroli dostępu WebDAV (rfc3744).
  • rfc4791: Kalendarzowanie rozszerzeń do WebDAV (CalDAV)
    • Obsługuje metodę HTTP REPORT. Wszystkie raporty oprócz zapytania o stan Wolny/Zajęty są zaimplementowane.
    • Nie obsługuje metody HTTP MKCALENDAR.
    • Nie obsługuje czynności AUDIO.
  • rfc5545: iKalendarz
    • Dane udostępniane w interfejsie CalDAV są formatowane zgodnie z Specyfikacja pliku iCalendar.
    • Obecnie nie obsługuje danych VTODO ani VJOURNAL.
    • Rozszerzenie Apple iCal® nie obsługuje właściwości adresów URL możliwych do ustawienia przez użytkownika.
  • rfc6578: Collection Synchronization for WebDAV
    • Aplikacje klienckie muszą przełączyć się na ten tryb działania po synchronizacji początkowej.
  • rfc6638: Planowanie rozszerzeń do CalDAV
    • Obsługuje prostą „skrzynkę odbiorczą”, który jest zawsze pusty.
    • Otrzymane zaproszenia są automatycznie dostarczane na Twoje „wydarzenia” a nie do „skrzynki odbiorczej”.
    • Wyszukiwanie informacji o stanie Wolny/Zajęty nie jest obsługiwane.
  • caldav-ctag-02: tag CTag (CTag) kalendarza w CalDAV
    • Kalendarz ctag jest jak zasób etag. zmienia się, gdy coś w kalendarzu uległ zmianie. Dzięki temu aplikacja kliencka szybko stwierdzić, że nie ma potrzeby synchronizowania zmian zdarzeń.
  • calendar-proxy: funkcjonalność serwera proxy użytkowników Kalendarza w CalDAV
    • Aby poprawić wydajność synchronizacji kalendarza na urządzeniach z iOS, nie obsługują przekazywania dostępu za pomocą interfejsu calendar-proxy-read-for lub Działanie właściwości calendar-proxy-write-for z klientem użytkownika iOS zakończy się niepowodzeniem.

Nie udostępniliśmy jeszcze pełnej implementacji wszystkich specyfikacji. Jednak w przypadku wielu klientów, takich jak aplikacja Kalendarz firmy Apple, protokół CalDAV powinien współdziałać prawidłowo.

Uwaga: aby zapewnić bezpieczeństwo konta i zapobiec nadużyciom, Google może zapisywać pliki cookie w aplikacjach klienckich uzyskujących dostęp do danych przez CalDAV.

Tworzę identyfikator klienta

Aby korzystać z interfejsu API CalDAV, musisz mieć konto Google. Jeśli masz już konto, z którego możesz korzystać, nie musisz nic robić.

Aby wysyłać żądania do interfejsu CalDAV API, musisz zarejestrować się swojego klienta za pomocą Konsoli interfejsów API Google, tworząc projekt.

Otwórz konsolę interfejsów API Google. Kliknij Utwórz projekt. wpisz nazwę i kliknij Utwórz.

Następnym krokiem jest aktywowanie interfejsu CalDAV API.

Aby włączyć interfejs API w projekcie, wykonaj te czynności:

  1. Otwórz Bibliotekę API w konsoli interfejsów API Google. Jeśli pojawi się taka prośba, wybierz lub utwórz nowy projekt. W bibliotece interfejsów API wymienione są wszystkie dostępne Interfejsy API pogrupowane według rodziny usług i popularności.
  2. Jeśli interfejsu API, który chcesz włączyć, nie ma na liście, użyj wyszukiwania, aby ją znaleźć.
  3. Wybierz interfejs API, który chcesz włączyć, a następnie kliknij Włącz Przycisk
  4. Włącz płatności, jeśli pojawi się taka prośba.
  5. Jeśli pojawi się taka prośba, zaakceptuj Warunki korzystania z usługi API.
Do wykonywania żądań CalDAV API potrzebne są: Identyfikator klienta i Tajny klucz klienta.

Aby znaleźć identyfikator i tajny klucz klienta projektu, wykonaj te czynności:

  1. Wybierz istniejącą wersję OAuth 2.0 danych logowania lub otwórz stronę Dane logowania.
  2. Jeśli jeszcze nie masz tego za sobą, utwórz protokół OAuth 2.0 swojego projektu dane logowania, klikając Utwórz dane logowania > identyfikator klienta OAuth oraz podając informacje potrzebne do utworzenia danych logowania.
  3. Odszukaj Identyfikator klienta w sekcji Identyfikatory klienta OAuth 2.0. Aby wyświetlić szczegółowe informacje, kliknij identyfikator klienta.

Łączenie z serwerem CalDAV Google

Aby korzystać z interfejsu CalDAV, program kliencki początkowo łączy się z serwera kalendarza w jednym z dwóch punktów początkowych. W obu przypadkach połączenie musi być realizowany przy użyciu protokołu HTTPS i musi korzystać z protokołu OAuth 2.0. schematem uwierzytelniania. Serwer CalDAV odmówi uwierzytelnienia żądania chyba że przechodzi przez protokół HTTPS z uwierzytelnianiem OAuth 2.0 konta Google. Próba nawiązania połączenia przez HTTP lub użycie uwierzytelniania podstawowego kończy się 401 Unauthorized kod stanu.

Jeśli program kliencki (np. aplikacja Kalendarz firmy Apple) wymaga zbiór podmiotów zabezpieczeń jako punktu początkowego, identyfikator URI połączenia to:

https://apidata.googleusercontent.com/caldav/v2/calid/user

Gdzie calid należy zastąpić parametrem "identyfikator kalendarza" kalendarza, który ma być dostępny. Możesz go znaleźć w Interfejs internetowy Kalendarza Google w następujący sposób: w menu obok nazwę kalendarza, wybierz Ustawienia kalendarza. Na stronie wynikowej Identyfikator kalendarza jest wyświetlany w sekcji Kalendarz Adres. Identyfikator kalendarza głównego użytkownika jest taki sam jak adresu e-mail tego użytkownika.

Jeśli program kliencki (np. Mozilla Sunbird) wymaga kolekcję kalendarza jako punktem początkowym, identyfikator URI, z którym ma zostać nawiązane połączenie, to:

https://apidata.googleusercontent.com/caldav/v2/calid/events

Stary punkt końcowy https://www.google.com/calendar/dav to wycofane i nie są już obsługiwane; korzysta z niej na własne ryzyko. Zalecamy przejście na nowy format punktów końcowych opisany powyżej.

iCal® jest znakiem towarowym firmy Apple Inc.