CalDAV API 개발자 가이드

CalDAV는 클라이언트가 원격 서버의 캘린더 정보에 액세스하는 표준을 제공하는 WebDAV의 확장 프로그램입니다.

Google은 CalDAV 프로토콜을 사용하여 캘린더를 보고 관리하는 데 사용할 수 있는 CalDAV 인터페이스를 제공합니다.

사양

각 관련 사양에서 Google의 CalDAV 지원은 다음과 같습니다.

  • rfc4918: 웹 분산 작성 및 버전 관리를 위한 HTTP 확장 프로그램(WebDAV)
    • HTTP 메서드 GET, PUT, HEAD, DELETE, POST, OPTIONS, PROPFIND, PROPPATCH를 지원합니다.
    • HTTP 메서드 LOCK, UNLOCK, COPY, MOVE, MKCOL 또는 If* 헤더를 지원하지 않습니다 (If-Match 제외).
    • 임의 (사용자 정의) WebDAV 속성은 지원하지 않습니다.
    • WebDAV 액세스 제어 (rfc3744)를 지원하지 않습니다.
  • rfc4791: WebDAV로 캘린더 확장 프로그램 (CalDAV)
    • HTTP 메서드 REPORT를 지원합니다. 한가함-바쁨 쿼리를 제외한 모든 보고서가 구현됩니다.
    • HTTP 메서드 MKCALENDAR는 지원하지 않습니다.
    • AUDIO 작업을 지원하지 않습니다.
  • rfc5545: iCalendar
    • CalDAV 인터페이스에 노출된 데이터는 iCalendar 사양에 따라 형식이 지정됩니다.
    • 현재 VTODO 또는 VJOURNAL 데이터는 지원하지 않습니다.
    • 사용자가 설정 가능한 URL 속성을 허용하는 Apple iCal® 확장 프로그램을 지원하지 않습니다.
  • rfc6578: WebDAV를 위한 컬렉션 동기화
    • 클라이언트 애플리케이션은 초기 동기화 후 이 작업 모드로 전환해야 합니다.
  • rfc6638: CalDAV에 대한 예약 확장 프로그램
    • 항상 비어 있는 간단한 '받은편지함'을 지원합니다.
    • 받은 초대는 '받은편지함'에 배치되지 않고 '이벤트' 컬렉션으로 자동으로 전송됩니다.
    • 한가함-바쁨 조회를 지원하지 않습니다.
  • caldav-ctag-02: CalDAV의 캘린더 컬렉션 엔티티 태그 (CTag)
    • ctag 캘린더는 리소스 etag와 유사하며 캘린더의 내용이 변경되면 변경됩니다. 이렇게 하면 클라이언트 애플리케이션이 변경된 이벤트를 동기화할 필요가 없다는 것을 빠르게 판단할 수 있습니다.
  • calendar-proxy: CalDAV의 캘린더 사용자 프록시 기능
    • 위임을 지원하지 않는 iOS 기기에서 캘린더 동기화 성능을 개선하기 위해 iOS UserAgent와 함께 calendar-proxy-read-for 또는 calendar-proxy-write-for 속성을 사용하면 실패합니다.

아직 모든 관련 사양이 완전히 구현되지는 않았습니다. 하지만 Apple의 캘린더 앱과 같은 많은 클라이언트의 경우 CalDAV 프로토콜이 올바르게 상호 운용됩니다.

참고: 계정 보안 및 악용을 방지하기 위해 Google은 CalDAV를 통해 데이터에 액세스하는 클라이언트 애플리케이션에 쿠키를 설정할 수 있습니다.

클라이언트 ID 만들기

CalDAV API를 사용하려면 Google 계정이 있어야 합니다. 사용할 수 있는 계정이 이미 있다면 별도의 조치를 취할 필요가 없습니다.

CalDAV API에 요청을 보내려면 프로젝트를 만들어 Google API 콘솔에 클라이언트를 등록해야 합니다.

Google API 콘솔로 이동합니다. 프로젝트 만들기를 클릭하고 이름을 입력한 후 만들기를 클릭합니다.

다음 단계는 CalDAV API를 활성화하는 것입니다.

프로젝트에 API를 사용 설정하려면 다음 단계를 따르세요.

  1. Google API 콘솔에서 API 라이브러리를 엽니다. 메시지가 표시되면 프로젝트를 선택하거나 새 프로젝트를 만듭니다. API 라이브러리에는 사용 가능한 모든 API가 제품군 및 인기도별로 분류되어 있습니다.
  2. 사용 설정하려는 API가 목록에 없는 경우 검색을 사용하여 찾습니다.
  3. 사용 설정하려는 API를 선택한 다음 사용 설정 버튼을 클릭합니다.
  4. 메시지가 표시되면 결제를 사용 설정합니다.
  5. 메시지가 표시되면 API의 서비스 약관에 동의합니다.
CalDAV API 요청을 수행하려면 클라이언트 ID클라이언트 보안 비밀번호가 필요합니다.

프로젝트의 클라이언트 ID와 클라이언트 비밀번호를 찾으려면 다음 단계를 따르세요.

  1. 기존 OAuth 2.0 사용자 인증 정보를 선택하거나 사용자 인증 정보 페이지를 엽니다.
  2. 아직 사용자 인증 정보를 만들지 않았다면 사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 클릭하고 사용자 인증 정보를 만드는 데 필요한 정보를 제공하여 프로젝트의 OAuth 2.0 사용자 인증 정보를 만듭니다.
  3. OAuth 2.0 클라이언트 ID 섹션에서 클라이언트 ID를 찾습니다. 자세한 내용을 보려면 클라이언트 ID를 클릭하세요.

Google의 CalDAV 서버에 연결

CalDAV 인터페이스를 사용하기 위해 클라이언트 프로그램은 처음에 두 시작점 중 하나에서 캘린더 서버와 연결합니다. 두 경우 모두 HTTPS를 통해 연결해야 하며 OAuth 2.0 인증 스키마를 사용해야 합니다. CalDAV 서버는 요청이 Google 계정의 OAuth 2.0 인증을 통해 HTTPS를 통해 도착하지 않는 한 요청 인증을 거부합니다. HTTP 또는 기본 인증을 사용하여 연결을 시도하면 HTTP 401 Unauthorized 상태 코드가 표시됩니다.

클라이언트 프로그램 (예: Apple의 캘린더 앱)에서 주 구성원 컬렉션이 시작점으로 필요한 경우 연결할 URI는 다음과 같습니다.

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

여기서 calid는 액세스할 캘린더의 '캘린더 ID'로 대체되어야 합니다. 캘린더 이름은 Google Calendar 웹 인터페이스에서 다음과 같이 확인할 수 있습니다. 캘린더 이름 옆의 풀다운 메뉴에서 캘린더 설정을 선택합니다. 결과 페이지에서 캘린더 ID가 캘린더 주소 섹션에 표시됩니다. 사용자의 기본 캘린더의 캘린더 ID는 사용자의 이메일 주소와 동일합니다.

클라이언트 프로그램 (예: Mozilla Sunbird)에서 캘린더 컬렉션을 시작점으로 사용해야 하는 경우 연결할 URI는 다음과 같습니다.

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

이전 엔드포인트 https://www.google.com/calendar/dav는 지원 중단되었으며 더 이상 지원되지 않습니다. 사용에 따른 책임은 사용자에게 있습니다. 위에 설명된 새로운 엔드포인트 형식으로 전환하는 것이 좋습니다.

iCal®은 Apple Inc.의 상표입니다.