Chat アプリと Google Chat API リクエストの認証と認可

認証と認可は、Google Cloud のプロジェクトとリソースの リソースへのアクセスをそれぞれ制御できます。このドキュメントでは、Google Cloud での認証および 認証の仕組みについて説明します。

プロセスの概要

次の図は、認証と認可の大まかな手順を示しています。 いくつかあります。

Google Chat の認証と認可の手順の概要
図 1. Google Chat の認証と認可の手順の概要を説明します。

  1. Google Cloud プロジェクトを構成し、Chat API を有効にして、 Chat 用アプリ: 開発では、 Google Cloud プロジェクトですGoogle Cloud プロジェクトで Chat API を有効にし、 Chat 用アプリを構成して認証を設定します。 詳細については、次をご覧ください: Google Workspace での開発 Chat アプリを作成するをご覧ください。

  2. Call Chat API: アプリが Chat API を介して、Google Chat に Chat API。条件 アプリがサービス アカウントで認証されると、認証情報はサービス アカウントとして 必要があります。アプリで Chat API の呼び出しが必要な場合 まだ付与されていないユーザーの認証を使用すると、 できます。

  3. リソースのリクエスト: アプリが次の権限によるアクセスを要求しています。 スコープ 認証の設定時に指定します。

  4. 同意を求める: アプリがユーザーとして認証されている場合、Google は アプリに権限を付与するかどうかをユーザーが決定できる OAuth 同意画面 アクセス権を取得できます。サービス アカウントを使用した認証では ユーザーの同意が必要です。

  5. リソースの承認済みリクエストを送信する: ユーザーが 場合、アプリは認証情報とユーザーが承認した認証情報を リクエストの範囲を特定します。リクエストが Google の承認サーバーに送信される アクセス トークンを取得します。

  6. Google がアクセス トークンを返す: アクセス トークンには、 付与されています。返されたスコープのリストが、指定したポリシーよりも制限が トークンによって制限されたすべての機能がオフになります。

  7. リクエストされたリソースへのアクセス: アプリは Google からのアクセス トークンを使用して、 Chat API を呼び出して、Chat API リソースにアクセスできます。

  8. 更新トークンを取得する(省略可): アプリが 1 つのアクセス トークンの有効期間を超える Google Chat API では、 あります。詳細については、次をご覧ください: OAuth 2.0 を使用して Google API にアクセスする

  9. 追加のリソースをリクエストする: アプリがさらにアクセス権を必要とする場合は、ユーザーに確認を求めます。 新しいスコープを付与し、アクセス トークンを取得するための新しいリクエストが発生する (ステップ 3 ~ 6)。

Chat アプリで認証が必要な場合

Chat アプリは、ユーザー操作に応じてメッセージを送信できます。 使用できます。また、ユーザーに代わって、ユーザーの代わりに Chat スペースの作成やグループ チャットの Chat スペース。

Chat アプリでは、チャット アプリケーションへの ただし、Chat 用アプリが Chat API または別の Google API を レスポンスを処理しています。

ユーザーの代わりに非同期メッセージを送信したりタスクを実行したりするには、 チャットアプリは、サービスに対して RESTful リクエストを Chat API 認証と認可が必要です。

ユーザー操作に対するレスポンスに認証を必要としない

Google Chat アプリは、ユーザーまたはグループとしての認証は 同期的に受信して応答する Chat アプリ 操作イベント

Google Chat アプリは、ユーザーが Google Chat でなんらかの操作を は、次のような Chat 用アプリを呼び出します。

  • ユーザーが Chat アプリにメッセージを送信します。
  • ユーザーが Chat 用アプリに @メンションしました。
  • ユーザーが Chat 用アプリの スラッシュ コマンドを使用します。

次の図は、HTTP リクエスト間のリクエスト / レスポンス シーケンスを Chat ユーザーと Chat アプリ:

<ph type="x-smartling-placeholder">
</ph> Chat 用アプリのインタラクション イベントに承認は不要
図 2. Chat 用アプリのインタラクション イベントには認証が不要。

  1. ユーザーが Chat アプリにメッセージを送信すると、 できます。
  2. Google Chat からアプリにメッセージが転送されます。
  3. アプリはメッセージを受信して処理し、 できます。
  4. Google Chat によって、ユーザーまたはスペース内に回答が表示されます。

このシーケンスが Chat 用アプリのインタラクションごとに繰り返されます。 イベントです。

非同期メッセージには認証が必要

非同期メッセージは、Chat 用アプリが リクエストを Chat API これには認証と認可が必要です。

Chat API を呼び出すことで、Chat アプリはメッセージを投稿できます。 タスクを完了したり、データにアクセスしたりできます。対象 たとえば、サーバーの停止を検出すると、Chat アプリは Chat API で以下を行えます。

  • 問題の調査と修正に特化した Chat スペースを作成する 停止します
  • Chat スペースにユーザーを追加します。
  • Chat スペースにメッセージを投稿して、スペースの詳細を説明する 停止します

次の図は、インスタンス間の非同期メッセージ シーケンスを Chat スペース:

非同期メッセージに必要な認証
図 3. 非同期メッセージには認証が必要です。

  1. Chat アプリは、メッセージを作成し、 Chat 用 API に spaces.messages.create メソッド、 HTTP リクエストにユーザー認証情報を含めます。
  2. Google Chat は、Google Chat で Chat 用アプリを認証 サービスアカウントまたはユーザー認証情報です。
  3. Google Chat は、指定された Chat にアプリのメッセージをレンダリングする。 選択します。

Chat API のスコープ

OAuth 同意画面を構成してスコープを選択する ユーザーやアプリのレビュアーに表示する情報を定義して、 有効にして後で公開できます

アプリに付与するアクセスのレベルを定義するには、 認可スコープを宣言します。認可スコープは OAuth 2.0 URI である Google Workspace アプリ名、そのアプリ名、 アクセスレベルが含まれます。

機密でないスコープ

スコープコード 説明
https://www.googleapis.com/auth/chat.bot

chat.bot スコープは、サービス アカウントのみをサポートします。マイページ 認証には、ユーザーの認証情報または Google API を ドメイン全体の委任 このスコープを使用します

Chat アプリでチャットの表示とメッセージの送信を許可します。贈る Chat アプリで使用できるすべての機能にアクセスできます。

機密性の高いスコープ

スコープコード 説明
https://www.googleapis.com/auth/chat.spaces 会話とスペースの作成、メタデータの参照または編集( 履歴設定とアクセス設定など)を Chat 内で管理できます。
https://www.googleapis.com/auth/chat.spaces.create Chat で新しい会話を作成する。
https://www.googleapis.com/auth/chat.spaces.readonly Chat でチャットとスペースを表示する。
https://www.googleapis.com/auth/chat.memberships Chat の会話のメンバーを表示、追加、更新、削除する。
https://www.googleapis.com/auth/chat.memberships.app Google Chat の会話への追加と削除ができます。
https://www.googleapis.com/auth/chat.memberships.readonly Chat の会話のメンバーを表示する。
https://www.googleapis.com/auth/chat.messages.create Chat でメッセージを作成して送信する。
https://www.googleapis.com/auth/chat.messages.reactions Chat 内のメッセージに対するリアクションの表示、追加、削除。
https://www.googleapis.com/auth/chat.messages.reactions.create Chat でメッセージにリアクションを追加できます。
https://www.googleapis.com/auth/chat.messages.reactions.readonly Chat でメッセージへのリアクションを表示する。
https://www.googleapis.com/auth/chat.users.readstate Chat の会話の最終既読時間の表示と変更を行います。
https://www.googleapis.com/auth/chat.users.readstate.readonly Chat のスレッドの最終既読時間を表示します。
https://www.googleapis.com/auth/chat.admin.spaces.readonly 管理者のドメインが所有するチャットとスペースを Chat で表示します。
https://www.googleapis.com/auth/chat.admin.spaces 管理者のドメインが所有するチャットとスペースを Chat で表示または編集する。
https://www.googleapis.com/auth/chat.admin.memberships.readonly 管理者のドメインが所有する会話のメンバーとマネージャーを Chat で表示できます。
https://www.googleapis.com/auth/chat.admin.memberships 管理者のドメインが所有する会話のメンバーとマネージャーを Chat で表示、追加、更新、削除する。

制限付きスコープ

スコープコード 説明
https://www.googleapis.com/auth/chat.delete 会話とスペース、関連ファイルへのアクセス権を削除する できます。
https://www.googleapis.com/auth/chat.import スペース、メッセージ、メンバーシップを Chat にインポートします。対象 詳細については、以下をご覧ください。 Chat アプリにデータのインポートを許可する
https://www.googleapis.com/auth/chat.messages メッセージの表示、作成、送信、更新、削除と、メッセージの追加、表示、 メッセージへのリアクションの削除。
https://www.googleapis.com/auth/chat.messages.readonly Chat でメッセージとリアクションを表示する。
https://www.googleapis.com/auth/chat.admin.delete 管理者のドメインが所有する会話とスペース、関連ファイルへのアクセス権を削除する できます。

上の表のスコープは、 次の定義があります。

アプリで他の Google API にアクセスする必要がある場合は、それらのスコープを追加できます できます。Google API スコープの詳細については、OAuth 2.0 を使用した OAuth 2.0 の使用をご覧ください。 Google API にアクセスする

Google Workspace API のスコープについて詳しくは、以下をご覧ください。 OAuth 同意画面を構成し、スコープを選択します

必要な認証の種類

Chat 用アプリは 2 つの方法で認証と認可を行うことができます。 ユーザー認証情報またはサービス アカウント。

ユーザー認証情報による承認により、Chat アプリは ユーザーデータにアクセスし、ユーザーに代わって操作を完了します。 OAuth スコープは、承認済みのデータとアクションを指定します。

アプリの承認では、Chat 用アプリが サービス アカウント認証情報を使用して API をアプリとして操作できます。アプリの認証を常に chat.bot 承認スコープを使用します。

特定の API リクエストに使用する認証情報の種類を決定する際は、 一部の API メソッドは、特定のタイプのデータのみをサポートする あります。API メソッドが両方の認証情報をサポートしている場合、 は、返される結果に影響を及ぼします。

  • アプリの承認を使用すると、メソッドはアプリが実行可能なリソースのみを返す できます。
  • ユーザー承認を使用すると、メソッドは user が アクセスできます。

たとえば、アプリの認証を使用して ListSpaces メソッドを呼び出すと、 アプリがメンバーになっているスペースのリスト。ユーザーで ListSpaces を呼び出す Authorization は、ユーザーがメンバーになっているスペースのリストを返します。イン アプリでは、 必要な機能に応じて Chat API。

非同期 Chat API 呼び出しの場合

次の表に、Chat API のメソッドと、サポートされているメソッドを示します。 認可スコープ:

メソッド ユーザー認証のサポート アプリの認証のサポート サポートされている認可スコープ
スペース  
スペースを作成する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.spaces.create
  • chat.spaces
  • chat.import
スペースを設定する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.spaces.create
  • chat.spaces
スペースを取得する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.spaces.readonly
  • chat.spaces
で確認できます。 アプリの認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
で確認できます。 管理者権限を使用するユーザー認証の場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.spaces.readonly
スペースを一覧表示する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.spaces.readonly
  • chat.spaces
で確認できます。 アプリの認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
スペースを検索 管理者権限を使用するユーザー認証の場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.spaces.readonly
スペースを更新する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.spaces
  • chat.import
で確認できます。 管理者権限を使用するユーザー認証の場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.spaces
スペースを削除する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.delete
  • chat.import
で確認できます。 管理者権限を使用するユーザー認証の場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.delete
スペースのインポート プロセスを完了する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.import
ダイレクト メッセージを見つける ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.spaces.readonly
  • chat.spaces
で確認できます。 アプリの認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
メンバー  
メンバーを作成する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.memberships
  • chat.memberships.app
  • chat.import
で確認できます。 管理者権限を使用するユーザー認証の場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.memberships
メンバーを取得する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.memberships.readonly
  • chat.memberships
で確認できます。 アプリの認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
で確認できます。 管理者権限を使用するユーザー認証の場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.memberships.readonly
メンバーを一覧表示する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.memberships.readonly
  • chat.memberships
  • chat.import
で確認できます。 アプリの認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
で確認できます。 管理者権限を使用するユーザー認証の場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.memberships.readonly
メンバーを削除する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.memberships
  • chat.memberships.app
  • chat.import
で確認できます。 管理者権限を使用するユーザー認証の場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.memberships
メンバーを更新する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.memberships
  • chat.import
で確認できます。 管理者権限を使用するユーザー認証の場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.memberships
メッセージ  
メッセージを作成する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.create
  • chat.messages
  • chat.import
で確認できます。 アプリの認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
メッセージを取得する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.readonly
  • chat.messages
で確認できます。 アプリの認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
メッセージを一覧表示する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.readonly
  • chat.messages
  • chat.import
メッセージを更新する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages
  • chat.import
で確認できます。 アプリの認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
メッセージを削除する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages
  • chat.import
で確認できます。 アプリの認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
リアクション  
リアクションを作成する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
  • chat.import
リアクションを一覧表示する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
リアクションを削除する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.reactions
  • chat.messages
  • chat.import
メディア、添付ファイル  
メディアを添付ファイルとしてアップロードする ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.create
  • chat.messages
  • chat.import
メディアをダウンロードする ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.readonly
  • chat.messages
で確認できます。 アプリの認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
メッセージの添付ファイルを取得する アプリの認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
ユーザーの読み取り状態
ユーザーのスペース読み取り状態を取得する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.users.readstate
  • chat.users.readstate.readonly
ユーザーのスペース読み取り状態を更新する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.users.readstate
ユーザーのスレッドの読み取り状態を取得する ユーザー認証を使用する場合: <ph type="x-smartling-placeholder">
    </ph>
  • chat.users.readstate
  • chat.users.readstate.readonly
スペース イベント
<ph type="x-smartling-placeholder"></ph> 宇宙のイベントを確認する ユーザー認証では、 スコープを使用する必要があり、 <ph type="x-smartling-placeholder"></ph> イベントタイプ: <ph type="x-smartling-placeholder">
    </ph>
  • メッセージに関するイベントの場合:
    • chat.messages
    • chat.messages.readonly
  • リアクションに関するアクティビティの場合:
    • chat.messages.reactions
    • chat.messages.reactions.readonly
    • chat.messages
    • chat.messages.readonly
  • メンバーシップに関するイベントの場合:
    • chat.memberships
    • chat.memberships.readonly
  • スペースに関するイベントの場合:
    • chat.spaces
    • chat.spaces.readonly
<ph type="x-smartling-placeholder"></ph> スペースのイベントを一覧表示する ユーザー認証では、 スコープを使用する必要があります。 <ph type="x-smartling-placeholder"></ph> リクエストに含まれるイベントタイプに基づいて識別されます。 <ph type="x-smartling-placeholder">
    </ph>
  • メッセージに関するイベントの場合:
    • chat.messages
    • chat.messages.readonly
  • リアクションに関するアクティビティの場合:
    • chat.messages.reactions
    • chat.messages.reactions.readonly
    • chat.messages
    • chat.messages.readonly
  • メンバーシップに関するイベントの場合:
    • chat.memberships
    • chat.memberships.readonly
  • スペースに関するイベントの場合:
    • chat.spaces
    • chat.spaces.readonly

Chat 用アプリのインタラクション イベントの場合

次の表に、ユーザーが Chat 用アプリを使用する一般的な方法と、認証が必要かサポートされているかを示します。

シナリオ 認証は不要 ユーザー認証のサポート アプリの認証のサポート
次からのメッセージの受信:
Chat 用アプリのインタラクション イベント
Apps Script コールバック
Google Cloud Pub/Sub
メッセージへの応答:
同期(Chat アプリのインタラクション イベントを使用)
同期(Apps Script コールバックの戻り値を使用)
新しいメッセージを送信する:
受信 Webhook を使用