Google の CardDAV プロトコルを使用して、連絡先を表示、管理できます。
連絡先はユーザーの Google アカウントに保存されます。ほとんどの Google サービスは、 アクセスできるようになります。クライアント アプリケーションで CardDAV API を使用して、 新しい連絡先の作成、既存の連絡先の編集または削除、連絡先の検索 フィルタすることもできます
仕様
仕様全体は実装されていませんが、Apple iOS™ の連絡先や macOS など、多くのクライアントは正しく相互運用する必要があります。
関連する各仕様について、Google の CardDAV サポートは次のとおりです。
- rfc2518: HTTP Extensions for Distributed Authoring(WebDAV)
<ph type="x-smartling-placeholder">
- </ph>
- HTTP メソッド
GET、PUT、DELETE、OPTIONS、PROPFINDをサポートします。 - HTTP メソッド
LOCK、UNLOCK、COPY、MOVE、MKCOLはサポートされていません。 - 任意の(ユーザー定義の)WebDAV プロパティはサポートしていません。
- WebDAV アクセス制御(rfc3744)はサポートしていません。
- HTTP メソッド
- rfc5995: POST を使用して WebDAV コレクションにメンバーを追加する
- ID を指定せずに新しい連絡先を作成できます。
- rfc6352: CardDAV: Web Distributed Authoring および
バージョニング(WebDAV)
<ph type="x-smartling-placeholder">
- </ph>
- HTTP メソッド
REPORTをサポートしていますが、定義されたレポートのすべてが実装されているわけではありません。 - プリンシパル コレクションとコンタクト コレクションの提供をサポートします。
- HTTP メソッド
- rfc6578: WebDAV のコレクションの同期
- クライアント アプリケーションは、最初の同期後にこの動作モードに切り替える必要があります。
- rfc6749: OAuth 2.0 認可フレームワークと
rfc6750: OAuth 2.0 認可フレームワーク: 署名なしトークンの使用
<ph type="x-smartling-placeholder">
- </ph>
- OAuth 2.0 HTTP を使用した CardDAV クライアント プログラムの認証をサポートします 認証。Google は他の認証方法をサポートしていません。 連絡先データのセキュリティを確保するため、CardDAV 接続で HTTPS を使用する必要があります。
- rfc6764: Locating Services for Calendaring Extensions to WebDAV (CalDAV) and vCard Extensions to WebDAV (CardDAV)
- CardDAV URL のブートストラップは、rfc6764 のセクション 6 に従って行う必要があります。
- サポート
caldav-ctag-02: CalDAV のカレンダー コレクションのエンティティ タグ(CTag)
CardDAV 仕様と CalDAV 仕様の間で共有されます。連絡先
ctagはリソースETagに似ています。連絡先アドレス帳の何かが変更されると変更されます。これにより、クライアント プログラムは、変更された連絡先を同期する必要がないことをすばやく判断できます。 - Google では、連絡先のエンコード形式として VCard 3.0 を使用しています。rfc6350: VCard 3.0 をご覧ください。
Google の CardDAV には OAuth 2.0 が必要です
Google の CardDAV インターフェースには OAuth 2.0 が必要です。OAuth 2.0 を使用して Google API にアクセスする方法については、以下のドキュメントをご覧ください。
Google の CardDAV サーバーに接続する
CardDAV プロトコルにより、アドレス帳や連絡先リソースを検出可能 URI などです。URI は随時変更される可能性があるため、ハードコードしないでください。
クライアント アプリケーションで HTTPS を使用し、OAuth 2.0 認証を
ユーザー ID 情報です。CardDAV サーバーは
リクエストが OAuth 2.0 で HTTPS 経由で到着しない限り認証する
認証され、アプリケーションは
DevConsoleHTTP 経由で Basic 認証を使用するか、Google アカウントと一致しないメールアドレスまたはパスワードを使用して接続しようとすると、HTTP 401 Unauthorized レスポンス コードが返されます。
CardDAV を使用するには、まずクライアント プログラムを正規 URL に接続する必要があります
次に対して HTTP PROPFIND を実行して、検出パスを指定します。
https://www.googleapis.com/.well-known/carddav
アドレス帳リソースにリダイレクト(HTTP 301)されたら、クライアント プログラムは PROPFIND を実行して DAV:current-user-principal、DAV:principal-URL、addressbook-home-set プロパティを検出できます。クライアント プログラムは、addressbook-home-set で PROPFIND を実行し、addressbook リソースと collection リソースを検索することで、プリンシパル アドレス帳を検出できます。このプロセスの詳細については、このドキュメントでは説明しません。詳しくは、rfc6352 をご覧ください。
PROPFIND を介して HTTP 301 レスポンスで返されるリダイレクト パス
(
rfc6764)。デバイスは既知の方法で再試行する必要があります
URI 検出を定期的に行い、キャッシュされたパスが最新の状態であり、
再同期する必要があります。2~4 週間ごとの実施をおすすめします。
リソース
CardDAV は REST のコンセプトを使用します。クライアント アプリケーションは、URI で指定されたリソースに対して動作します。現在の URI 構造は、 次のセクションで説明するコンセプトを理解していることを前提としています。構造は変更される可能性があるため、ハードコードしないでください。代わりに、RFC に従ってリソースを検出する必要があります。
- プリンシパル
<ph type="x-smartling-placeholder">
- </ph>
- https://www.googleapis.com/carddav/v1/principals/
userEmail
- https://www.googleapis.com/carddav/v1/principals/
- ホームセット
<ph type="x-smartling-placeholder">
- </ph>
- https://www.googleapis.com/carddav/v1/principals/
userEmail/lists
- https://www.googleapis.com/carddav/v1/principals/
- アドレス帳
<ph type="x-smartling-placeholder">
- </ph>
- https://www.googleapis.com/carddav/v1/principals/
userEmail/lists/default
- https://www.googleapis.com/carddav/v1/principals/
- お問い合わせ
- https://www.googleapis.com/carddav/v1/principals/
userEmail/lists/default/contactId
- https://www.googleapis.com/carddav/v1/principals/
連絡先を同期する
サポートされているオペレーションの概要は次のとおりです。デベロッパーは、関連する RFC で詳細を確認する必要があります。リクエストとレスポンスはほとんど XML でエンコードされます。クライアント アプリケーションが同期に使用する主なオペレーションは次のとおりです。
- CTag を使用する
<ph type="x-smartling-placeholder">
- </ph>
- クライアント プログラムは、アドレス帳リソースの
getctagPROPFINDリクエストを使用して、サーバーで連絡先が変更されたかどうか、つまり同期が必要かどうかを判断します。このプロパティの値は、連絡先が変更されると必ず変更されます。クライアント アプリケーション この値を保存し、最初の同期でのみ使用し、sync-tokenが無効になった場合のフォールバックgetctagプロパティを定期的にポーリングすると、スロットリングが発生します。
- クライアント プログラムは、アドレス帳リソースの
- sync-token の使用
<ph type="x-smartling-placeholder">
- </ph>
- クライアント プログラムは、アドレス帳に対する
sync-tokenPROPFINDリクエストを使用して、現在の状態を表すsync-tokenを取得します。クライアント アプリケーションはこの値を保存し、定期的にsync-collectionを発行する必要があります。REPORTリクエストで、前回の発行からの変更を確認sync-token。発行されたトークンは 29 日間有効で、REPORTレスポンスには新しいsync-tokenが含まれます。
- クライアント プログラムは、アドレス帳に対する
- ETag の使用
- クライアント アプリケーションが Address で
getetagPROPFINDリクエストを発行する 予約リソース(DEPTHヘッダーがDEPTH_1と等しい)。インフラストラクチャを 各連絡先のETag値。クライアント プログラムは値をリクエストできます。ETagが変更された連絡先の割合。
- クライアント アプリケーションが Address で
- 連絡先の取得
- クライアント アプリケーションは、
addressbook-multigetREPORTリクエスト。連絡先 URI のリストが指定されている場合、レポートはリクエストされたすべての連絡先を VCard 3.0 値として返します。各エントリには、連絡先のETagが含まれています。
- クライアント アプリケーションは、
- 連絡先を挿入する
<ph type="x-smartling-placeholder">
- </ph>
- クライアント アプリケーションは、VCard 3.0 形式の新しい連絡先を含む
POSTリクエストを発行します。レスポンスには、新しい連絡先の ID が含まれます。
- クライアント アプリケーションは、VCard 3.0 形式の新しい連絡先を含む
- 連絡先の更新
- クライアント アプリケーションは、更新された連絡先を VCard 3.0 形式で含めて
PUTリクエストを発行します。連絡先がアドレス帳にすでに存在する場合、連絡先が更新されます。 - クライアント アプリケーションには、連絡先の現在知られている
ETagを含むIf-Matchヘッダーを含める必要があります。その後、サーバーはPUTを拒否します。 サーバーの現在のETagが次の場合にHTTP 412をリクエストし、 クライアント プログラムから送信されたETagとは異なります。これにより、更新のオプティミスティック シリアル化が可能になります。
- クライアント アプリケーションは、更新された連絡先を VCard 3.0 形式で含めて
- 連絡先の削除
- クライアント アプリケーションが
DELETEリクエストを発行して連絡先を削除する 照合されます。
- クライアント アプリケーションが