Google Calendar API V3(Java)を使用して、
Googleカレンダーのアクセス制御ルール(ACL)を変更を監視する方法
についてご紹介します。
カレンダーのアクセス制御ルール(ACL)とは
指定したユーザー、またはグループと予定の共有ができます。
UIでは、カレンダーの設定 -> [特定のユーザーまたはグループと共有する]
から設定できる内容です。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Calendar API(V3)] JavaでCalendar APIを使う
を参照ください。
No | 目次 | |
---|---|---|
1 | ACLの変更を監視 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 | |
2 | ACLの監視を停止 | |
3 | 変更通知を受信 |
1. ACLの変更を監視
Googleカレンダーのアクセス制御ルールの変更を監視します。
1.1. スコープ
このAPIを実行するには、以下のスコープを指定してください。
CalendarScopes.CALENDAR
⧉[Google Calendar API(V3)] JavaでCalendar APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。
1.2. 実行
public static void main(String[] args) throws Exception{
Calendar calendar = getCalendar();
Calendar.Acl acl = calendar.acl();
Channel content = new Channel();
content.setId("チャンネルを識別するUUID");
content.setType("web_hook");
content.setAddress("変更通知が配信されるURL");
Calendar.Acl.Watch watch = acl.watch("カレンダーID",content);
Channel res = watch.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
POST: https://www.googleapis.com/calendar/v3/calendars/{カレンダーID}/acl/watch
が実行されます。
1.2.2. クエリパラメータ
クエリパラメータはありません。
1.2.3. リクエストボディ
Channelのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setId | String | 【必須】チャンネルを識別するUUID |
setAddress | String | 【必須】変更通知が配信されるURL |
setType | String | 【必須】このチャンネルで使用される配信方法の種類 "web_hook"(または"webhook")のみ |
setToken | String | このチャンネル経由で通知と一緒に対象のアドレスに配布される任意の文字列 |
setParams | Map<String,String> | 配信チャンネルの操作を制御する追加のパラメータ |
setExpiration | Long | 通知チャンネルの有効期間(秒) |
1.3. レスポンスの内容
Channel
メソッド | 戻り値 | 説明 |
---|---|---|
getKind | String | リソースの種類 固定文字列:"api#channel" |
getId | String | このチャンネルを識別するUUID |
getResourceId | String | このチャンネルで監視するリソースを識別するID |
getResourceUri | String | 監視対象のリソースのバージョン固有のID |
getToken | String | このチャンネル経由で通知と一緒に対象のアドレスに配布される任意の文字列 |
getExpiration | long | 通知チャンネルの有効期限 |
2. ACLの監視を停止
Googleカレンダーのアクセス制御ルールの監視を停止します。
変更通知の停止は、
⧉[Google Calendar API(V3)] Javaで変更通知を停止する
の記事を参照ください。
3. 変更通知を受信
アクセス制御ルール(ACL)の変更があった場合、登録したURLへPOSTされます。
HTTPヘッダーの「x-goog」から始まるヘッダーの内容で確認できます。
ヘッダ | 内容 | 例 |
---|---|---|
x-goog-channel-expiration | 通知チャネルの有効期限 | Tue, 02 Apr 2024 03:29:03 GMT |
x-goog-channel-id | チャンネルを識別するUUID | test |
x-goog-message-number | 通知チャネルのこのメッセージを識別する整数 | 5238 |
x-goog-resource-id | チャンネルで監視するリソースを識別するID | NM0q1CyhvAtfdSZIlhdhdKtz68Q |
x-goog-resource-state | 通知をトリガーした新しいリソースの状態 sync,exists,not_exists |
exists |
x-goog-resource-uri | 監視対象リソースの API バージョン固有の識別子 | https://www.googleapis.com/calendar/v3/calendars/*******/acl?alt=json |
おしまい。。