認証と認可は、Google Cloud のプロジェクトとリソースの リソースへのアクセスをそれぞれ制御できます。このドキュメントでは、Chat アプリと Chat API リクエストの認証と認可の仕組みについて概説します。
プロセスの概要
次の図は、Google Chat の認証と認可の大まかな手順を示しています。
Google Cloud プロジェクトを構成し、Chat API を有効にして Chat アプリを構成する: 開発中に Google Cloud プロジェクトを作成します。Google Cloud プロジェクトで Chat API を有効にし、 Chat 用アプリを構成して認証を設定します。 詳しくは、Google Workspace で開発するとChat アプリを作成するをご覧ください。
Chat API を呼び出す: アプリが Chat API を呼び出すと、認証情報は Chat API に送信されます。条件 アプリがサービス アカウントで認証されると、認証情報はサービス アカウントとして 必要があります。アプリで、まだ付与されていないユーザーの認証を使用して Chat API を呼び出す必要がある場合は、ユーザーにログインを求めるメッセージが表示されます。
リソースのリクエスト: アプリが次の権限によるアクセスを要求しています。 スコープ 認証の設定時に指定します。
同意を求める: アプリがユーザーとして認証されている場合、OAuth 同意画面が表示されます。これにより、ユーザーはリクエストされたデータへのアクセスをアプリに許可するかどうかを決定できます。サービス アカウントを使用した認証では ユーザーの同意が必要です。
リソースの承認済みリクエストを送信する: ユーザーが認可スコープに同意すると、アプリは認証情報とユーザーが承認したスコープをリクエストにバンドルします。リクエストが Google 認可サーバーに送信され、アクセス トークンが取得されます。
Google がアクセス トークンを返す: アクセス トークンには、 付与されています。返されたスコープのリストが、指定したポリシーよりも制限が トークンによって制限されたすべての機能がオフになります。
リクエストされたリソースにアクセスする: アプリは Google のアクセス トークンを使用して Chat API を呼び出し、Chat API リソースにアクセスします。
更新トークンを取得する(省略可): アプリが 1 つのアクセス トークンの有効期間を超える Google Chat API では、 あります。詳細については、次をご覧ください: OAuth 2.0 を使用して Google API にアクセスする
追加のリソースをリクエストする: アプリがさらにアクセス権を必要とする場合は、ユーザーに確認を求めます。 新しいスコープを付与し、アクセス トークンを取得するための新しいリクエストが発生する (ステップ 3 ~ 6)。
Chat アプリで認証が必要な場合
チャットアプリは、ユーザー操作に応じて、または非同期でメッセージを送信できます。また、Chat スペースの作成や Chat スペース内のユーザーのリスト取得など、ユーザーに代わってタスクを完了することもできます。
Chat アプリがレスポンスの処理中に Chat API または別の Google API を呼び出す場合を除き、ユーザー操作に応答するために認証は必要ありません。
非同期メッセージを送信したり、ユーザーに代わってタスクを実行したりするために、Chat アプリは Chat API に対して RESTful リクエストを行います。このリクエストには認証と承認が必要です。
ユーザー操作に対するレスポンスで認証が不要
Google Chat アプリは、インタラクション イベントを受信して同期的に応答するために、ユーザーまたは Chat アプリとして認証する必要はありません。
Google Chat アプリは、ユーザーが Google Chat でなんらかの操作を は、次のような Chat 用アプリを呼び出します。
- ユーザーが Chat アプリにメッセージを送信します。
- ユーザーが Chat 用アプリに @メンションしました。
- ユーザーが Chat 用アプリの スラッシュ コマンドを使用します。
次の図は、HTTP リクエスト間のリクエスト / レスポンス シーケンスを Chat ユーザーと Chat アプリ:
<ph type="x-smartling-placeholder">- ユーザーが Chat アプリにメッセージを送信すると、 できます。
- Google Chat からアプリにメッセージが転送されます。
- アプリはメッセージを受信して処理し、Google Chat にレスポンスを返します。
- Google Chat は、ユーザーまたはスペースにレスポンスをレンダリングします。
このシーケンスが Chat 用アプリのインタラクションごとに繰り返されます。 イベントです。
非同期メッセージには認証が必要
非同期メッセージは、Chat アプリが Chat API にリクエストを送信するときに発生します。このリクエストには認証と承認が必要です。
Chat API を呼び出すことで、Chat アプリは Google Chat にメッセージを投稿したり、タスクを完了したり、ユーザーに代わってデータにアクセスしたりできます。たとえば、サーバーの停止を検出した Chat アプリは、Chat API を呼び出して次のことができます。
- サービス停止の調査と修正専用の Chat スペースを作成します。
- Chat スペースにユーザーを追加する。
- Chat スペースにメッセージを投稿して、サービス停止の詳細を伝えます。
次の図は、Chat アプリと Chat スペース間の非同期メッセージ シーケンスを示しています。
- Chat アプリは、メッセージを作成し、
Chat 用 API に
spaces.messages.create
メソッド、 HTTP リクエストにユーザー認証情報を含めます。 - Google Chat は、Google Chat で Chat 用アプリを認証 サービスアカウントまたはユーザー認証情報です。
- Google Chat は、指定された Chat にアプリのメッセージをレンダリングする。 選択します。
Chat API のスコープ
OAuth 同意画面を構成してスコープを選択する ユーザーやアプリのレビュアーに表示する情報を定義して、 有効にして後で公開できます
アプリに付与されるアクセスレベルを定義するには、認可スコープを特定して宣言する必要があります。認可スコープは OAuth 2.0 URI である Google Workspace アプリ名、そのアプリ名、 アクセスレベルが含まれます。
機密でないスコープ
スコープコード | 説明 |
---|---|
https://www.googleapis.com/auth/chat.bot
|
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.app.spaces
|
Chat での会話とスペースの作成、メタデータ(履歴設定やアクセス設定を含む)の参照、更新。要件 管理者の承認が必要です。 このスコープは、サービス アカウントによるアプリ認証のみをサポートします。マイページ 認証には、ユーザーの認証情報または Google API を ドメイン全体の委任 このスコープを使用します |
https://www.googleapis.com/auth/chat.app.spaces.create
|
Chat で新しい会話やスペースを作成する。管理者の承認が必要です。 このスコープは、サービス アカウントを使用したアプリの認証のみをサポートします。マイページ 認証には、ユーザーの認証情報または Google API を ドメイン全体の委任 このスコープを使用します |
https://www.googleapis.com/auth/chat.app.memberships
|
Chat の会話とスペースのメンバーを参照、追加、更新、削除する。 管理者の承認が必要です。 このスコープは、サービス アカウントを使用したアプリの認証のみをサポートします。このスコープを使用して、ユーザー認証情報またはドメイン全体の委任で認証することはできません。 |
https://www.googleapis.com/auth/chat.customemojis
|
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
|
管理者のドメインが所有する会話とスペース、関連ファイルへのアクセス権を削除する できます。 |
https://www.googleapis.com/auth/chat.app.delete
|
会話とスペース、関連ファイルへのアクセス権を削除する できます。 管理者の承認が必要です。 このスコープは、サービス アカウントによるアプリ認証のみをサポートします。このスコープを使用して、ユーザー認証情報またはドメイン全体の委任で認証することはできません。 |
上の表のスコープは、 次の定義があります。
非機密 - このスコープでは、広範囲を網羅する アクセスでき、基本的なアプリ確認のみが必要です。対象 詳しくは、試験準備の手順 確認します。
Sensitive - このスコープにより、アプリに特定のスコープ ユーザーの Google データ。必要な アプリの追加確認を実施してください。詳細については、このモジュールの 要件については、機密性の高い情報をリクエストするアプリ用の手順 スコープ。
制限付き - Google ユーザーデータに幅広くアクセスできます。 制限付きスコープの確認プロセスを完了する必要があります。この要件について詳しくは、Google API サービス: ユーザーデータ ポリシーと特定の API スコープの追加要件をご覧ください。制限付きスコープをリクエストするアプリの手順もご覧ください。
アプリが他の Google API へのアクセスを必要とする場合は、それらのスコープも追加できます。Google API スコープの詳細については、OAuth 2.0 を使用した Google API へのアクセスをご覧ください。
Google Workspace API のスコープについて詳しくは、以下をご覧ください。 OAuth 同意画面を構成し、スコープを選択します。
必要な認証の種類
Chat アプリが Chat API で認証と承認を行う方法は 2 つあります。
- ユーザー認証
- ユーザー認証 を使用すると、Chat アプリがユーザーデータにアクセスして、アクションを実行できるようになります。 自動的に作成されます。OAuth スコープは、承認されたデータとアクションを指定します。Chat アプリが管理者によってインストールされているか、ドメイン全体の委任が付与されている場合を除き、Chat アプリがユーザーに代わって初めてアクションを実行する際は、ユーザーが OAuth 同意画面を使用して Chat アプリを承認する必要があります。
- アプリの認証
アプリ認証を使用すると、Chat アプリはサービス アカウントの認証情報を使用して、自身としてデータにアクセスし、アクションを完了できます。これは、 Chat アプリ 独自の認証情報を使用してリソースにアクセスし、操作します。 エンドユーザーは、 Chat 用アプリの API 呼び出し、 アプリの認証をサポートする OAuth 認証スコープを OAuth 同意画面に移動します。
アプリ認証をサポートする OAuth 認証スコープは、次の 2 種類です。
https://www.googleapis.com/auth/chat.bot
: Chat アプリは、この認可スコープをサポートする Google Chat API メソッドを呼び出して、アクセス権を持つリソース(エンドユーザーが Chat アプリを追加したスペース内のメッセージなど)を作成、更新、取得、一覧表示、削除できます。お客様の Chat アプリはこの承認スコープを自己付与できます。 管理者やエンドユーザーの承認は必要ありません。https://www.googleapis.com/auth/chat.app.*
(デベロッパー プレビュー): これらのスコープを使用するには、管理者による 1 回限りの承認が必要です。管理者の承認を得るには、Google Workspace Marketplace 対応の OAuth クライアントを作成し、Google Workspace Marketplace SDK でアプリを構成して、Chat アプリのサービス アカウントを準備し、管理者の承認を得る必要があります。これらのスコープ Chat アプリから特定の Google Chat API を呼び出せるようにする あります。たとえば、chat.app.spaces.create
はアプリによる作成を許可します。 Chat スペース。
メソッドがユーザー認証とアプリ認証の両方をサポートしている場合、Chat API は、使用する認証タイプに基づいて異なる結果を返します。
- アプリの認証では、メソッドは、API 呼び出しによって Chat アプリがアクセスできます。
- ユーザー認証を使用すると、メソッドはユーザーがアクセスできるリソースのみを返します。
たとえば、アプリの認証を使用して spaces.list()
メソッドを呼び出すと、次の結果が返されます。
Chat アプリがメンバーになっているスペースのリスト。
ユーザーの承認で spaces.list()
を呼び出すと、ユーザーがメンバーになっているスペースのリストが返されます。イン
両方のタイプの
(設計に応じて、Chat API を呼び出す際の認証)
使用する必要があります。
非同期 Chat API 呼び出しの場合
次の表に、Chat API メソッドと、サポートされている認可スコープを示します。
メソッド | ユーザー認証のサポート | アプリの認証のサポート | サポートされている認可スコープ | |
---|---|---|---|---|
スペース | ||||
スペースを作成する |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
|||
スペースを設定する | — |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
||
スペースを取得する |
ユーザー認証の場合:
|
|||
スペースを一覧表示する |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
|||
検索スペース | — |
管理者権限を使用したユーザー認証の場合:
<ph type="x-smartling-placeholder">
|
||
スペースを更新する |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
|||
スペースを削除する |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
|||
スペースのインポート プロセスを完了する | — |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
||
ダイレクト メッセージを探す |
ユーザー認証の場合:
|
|||
メンバー | ||||
メンバーを作成する |
ユーザー認証の場合:
|
|||
メンバーを取得する |
ユーザー認証の場合:
|
|||
メンバーを一覧表示する |
ユーザー認証の場合:
|
|||
メンバーを削除する |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
|||
メンバーを更新する |
ユーザー認証の場合:
|
|||
メッセージ | ||||
メッセージを作成する |
ユーザー認証の場合:
|
|||
メッセージを取得する |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
|||
メッセージを一覧表示する | — |
ユーザー認証の場合:
|
||
メッセージを更新する |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
|||
メッセージを削除する |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
|||
リアクション | ||||
リアクションを作成する | — |
ユーザー認証の場合:
|
||
リアクションを一覧表示する | — |
ユーザー認証の場合:
|
||
リアクションを削除する | — |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
||
カスタム絵文字 | ||||
カスタム絵文字を作成する | — |
ユーザー認証の場合:
|
||
カスタム絵文字を削除する | — |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
||
カスタム絵文字を入手 | — |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
||
カスタム絵文字を一覧表示する | — |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
||
メディア、添付ファイル | ||||
メディアを添付ファイルとしてアップロードする | — |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
||
メディアをダウンロードする |
ユーザー認証の場合:
|
|||
メッセージの添付ファイルを取得する | — |
アプリの認証を使用する場合:
<ph type="x-smartling-placeholder">
|
||
ユーザーの読み取り状態 | ||||
ユーザーのスペースの読み取り状態を取得する | — |
ユーザー認証の場合:
|
||
ユーザーのスペース読み取り状態を更新する | — |
ユーザー認証の場合:
|
||
ユーザーのスレッドの読み取り状態を取得する | — |
ユーザー認証を使用する場合:
<ph type="x-smartling-placeholder">
|
||
宇宙イベント | ||||
スペースのイベントを取得する | — |
ユーザー認証では、
スコープを使用する必要があり、
<ph type="x-smartling-placeholder"></ph>
イベントタイプ:
<ph type="x-smartling-placeholder">
|
||
<ph type="x-smartling-placeholder"></ph> スペースのイベントを一覧表示する | — |
ユーザー認証では、
スコープを使用する必要があります。
<ph type="x-smartling-placeholder"></ph>
リクエストに含まれるイベントタイプに基づいて識別されます。
<ph type="x-smartling-placeholder">
|
Chat 用アプリのインタラクション イベントの場合
次の表に、ユーザーが Chat アプリを操作する一般的な方法と、認証が必須かサポートされているかを示します。
シナリオ | 認証は不要 | ユーザー認証をサポート | アプリの認証のサポート | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
次のユーザーからメッセージを受信する: |
|
|||||||||||||||
メッセージへの応答: |
|
|||||||||||||||
新しいメッセージを送信する: |
|
関連トピック
- Google Workspace での認証と認可の概要については、 認証と承認します。
- Google Cloud での認証と認可の概要については、以下をご覧ください。 認証の概要。
- サービス アカウントの詳細については、このモジュールの サービス アカウント。
- Google API で OAuth 2.0 を使用する方法について詳しくは、OAuth 2.0 を使用した Google API へのアクセスをご覧ください。
- 認証と認可を設定する ユーザー認証情報 または サービス アカウント。