身份验证和授权分别用于验证身份和对资源的访问权限。本文档简要介绍了 Chat 应用和 Chat API 请求的身份验证和授权的工作原理。
过程概览
下图显示了 Google Chat 身份验证和授权的大致步骤:
配置 Google Cloud 项目、启用 Chat API 以及配置 Chat 应用:在开发过程中,您需要创建 Google Cloud 项目。在 Google Cloud 项目中,您可以启用 Chat API、配置 Chat 应用并设置身份验证。如需了解详情,请参阅在 Google Workspace 上开发和构建 Chat 应用。
Call Chat API:当您的应用调用 Chat API 时,它会向 Chat API 发送身份验证凭据。如果您的应用使用服务帐号进行身份验证,则凭据将作为应用代码的一部分发送。如果您的应用需要使用尚未获得授权的用户身份验证方法来调用 Chat API,它会提示用户登录。
请求资源:您的应用请求访问您在设置身份验证时指定的范围。
请求同意:如果您的应用正在以用户身份进行身份验证,Google 会显示 OAuth 权限请求页面,以便用户决定是否授权您的应用访问所请求的数据。使用服务帐号进行身份验证不需要用户同意。
发送已批准的资源请求:如果用户同意授权范围,您的 app 会将凭据和用户批准的范围捆绑到请求中。该请求会被发送到 Google 授权服务器,以获取访问令牌。
Google 返回访问令牌:访问令牌包含已授予范围的列表。如果返回的范围列表比请求的范围限制性更强,您的应用会关闭受令牌限制的所有功能。
访问请求的资源:您的应用使用 Google 提供的访问令牌来调用 Chat API 并访问 Chat API 资源。
获取刷新令牌(可选):如果您的应用必须在单个访问令牌的生命周期结束后访问 Google Chat API,则可以获取刷新令牌。如需了解详情,请参阅使用 OAuth 2.0 访问 Google API。
请求更多资源:如果您的应用需要更多访问权限,则会要求用户授予新范围,从而产生获取访问令牌的新请求(第 3 步到第 6 步)。
Chat 应用何时需要进行身份验证
Chat 应用可以发送消息来响应用户互动,也可以异步发送消息。他们还可以代表用户完成任务,例如创建 Chat 聊天室或获取 Chat 聊天室中的人员列表。
聊天应用无需身份验证即可响应用户互动,除非 Chat 应用在处理响应时调用 Chat API 或其他 Google API。
为了代表用户发送异步消息或执行任务,Chat 应用会向 Chat API 发出 RESTful 请求,这需要进行身份验证和授权。
响应用户互动不需要进行身份验证
Google Chat 应用无需对用户或 Chat 应用进行身份验证,即可同步接收互动事件并做出响应。
每当用户与 Chat 应用互动或调用 Chat 应用时,Google Chat 应用都会收到互动事件,包括以下互动事件:
- 用户向 Chat 应用发送消息。
- 用户用“@”提及某个 Chat 应用。
- 用户调用 Chat 应用的某个斜杠命令。
下图显示了 Chat 用户和 Chat 应用之间的请求-响应序列:
- 用户向 Google Chat 中的 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 应用使用
spaces.messages.create
方法调用 Chat API 来创建消息,并在 HTTP 请求中包含用户凭据。 - Google Chat 使用服务账号或用户凭据对 Chat 应用进行身份验证。
- Google Chat 会将应用的消息呈现到指定的 Chat 聊天室。
Chat API 范围
配置 OAuth 同意屏幕并选择范围以定义要向用户显示的信息和应用审核者,并注册您的应用以便日后发布。
如需定义向您的应用授予的访问权限级别,您需要标识并声明授权范围。授权范围是一个 OAuth 2.0 URI 字符串,其中包含 Google Workspace 应用名称、应用访问的数据类型以及访问权限级别。
非敏感范围
范围代码 | 说明 |
---|---|
https://www.googleapis.com/auth/chat.bot
|
允许 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.memberships.readonly
|
在 Chat 中查看管理员网域所拥有的对话中的成员和管理员。 |
https://www.googleapis.com/auth/chat.admin.memberships
|
在 Chat 中查看、添加、更新和移除管理员网域拥有的对话中的成员和管理员。 |
受限范围
范围代码 | 说明 |
---|---|
https://www.googleapis.com/auth/chat.delete
|
在 Chat 中删除对话和聊天室,并移除对关联文件的访问权限。 |
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
|
在 Chat 中删除管理员网域拥有的对话和聊天室,并移除对关联文件的访问权限。 |
根据以下定义,上表中的范围指明了其敏感度:
非敏感 - 这些范围提供的授权访问范围最小,并且只需要基本的应用验证。如需了解此要求,请参阅准备验证的步骤。
敏感 - 在这些范围中,您的应用可以在获得用户授权后访问特定用户的 Google 数据。您需要完成额外的应用验证。如需了解此要求,请参阅针对请求敏感范围的应用的步骤。
受限 - 这些范围提供对 Google 用户数据的广泛访问权限,并要求您完成受限范围验证流程。如需了解此要求,请参阅 Google API 服务:用户数据政策和针对特定 API 范围的其他要求。 另请参阅针对请求受限范围的应用的步骤。
如果您的应用需要访问任何其他 Google API,您也可以添加这些范围。如需详细了解 Google API 范围,请参阅使用 OAuth 2.0 访问 Google API。
如需详细了解 Google Workspace API 的范围,请参阅配置 OAuth 权限请求页面并选择范围。
所需身份验证的类型
Chat 应用可以通过两种方式使用 Chat API 进行身份验证和授权:用户凭据或服务帐号。
有了用户凭据授权,Chat 应用可以代表用户访问用户数据并完成操作。OAuth 范围会指定已获授权的数据和操作。
通过应用授权,Chat 应用使用服务帐号凭据将 API 作为应用访问。应用授权始终使用 chat.bot
授权范围。
在决定用于特定 API 请求的凭据类型时,请注意,某些 API 方法仅支持特定类型的凭据。如果 API 方法同时支持这两种凭据,则调用中使用的凭据类型会影响返回的结果:
- 获得应用授权后,这些方法将仅返回应用可以访问的资源。
- 获得用户授权后,这些方法将仅返回用户可以在 Chat 界面中访问的资源。
例如,使用应用授权调用 ListSpaces
方法会返回应用所属的聊天室的列表。使用用户授权调用 ListSpaces
会返回用户所属的聊天室的列表。在实际使用中,您的应用在调用 Chat API 时可能会使用这两种授权,具体取决于您所需的功能。
对于异步 Chat API 调用
下表列出了 Chat API 方法及其支持的授权范围:
方法 | 支持用户身份验证 | 支持应用身份验证 | 支持的授权范围 | |
---|---|---|---|---|
聊天室 | ||||
创建聊天室 | — |
使用用户身份验证时:
|
||
设置聊天室 | — |
使用用户身份验证时:
|
||
获取聊天室 |
使用用户身份验证时:
|
|||
列出聊天室 |
使用用户身份验证时:
|
|||
搜索聊天室 |
使用管理员权限进行用户身份验证:
|
|||
更新聊天室 | — |
使用用户身份验证时:
|
||
删除聊天室 | — |
使用用户身份验证时:
|
||
完成聊天室的导入流程 | — |
使用用户身份验证时:
|
||
查找私信 |
使用用户身份验证时:
|
|||
成员 | ||||
创建成员 | — |
使用用户身份验证时:
|
||
获取成员 |
使用用户身份验证时:
|
|||
列表成员 |
使用用户身份验证时:
|
|||
删除成员 | — |
使用用户身份验证时:
|
||
信息 | ||||
创建消息 |
使用用户身份验证时:
|
|||
接收消息 |
使用用户身份验证时:
|
|||
列出消息 | — |
使用用户身份验证时:
|
||
更新消息 |
使用用户身份验证时:
|
|||
删除消息 |
使用用户身份验证时:
|
|||
回应 | ||||
创建回应 | — |
使用用户身份验证时:
|
||
列出回应 | — |
使用用户身份验证时:
|
||
删除回应 | — |
使用用户身份验证时:
|
||
媒体和附件 | ||||
以文件附件的形式上传媒体内容 | — |
使用用户身份验证时:
|
||
下载媒体内容 |
使用用户身份验证时:
|
|||
获取消息附件 | — |
使用应用身份验证时:
|
||
用户读取状态 | ||||
获取用户的空间读取状态 | — |
使用用户身份验证时:
|
||
更新用户的聊天室读取状态 | — |
使用用户身份验证时:
|
||
获取用户的线程读取状态 | — |
使用用户身份验证时:
|
||
聊天室事件 | ||||
获取聊天室活动 | — |
使用用户身份验证时:
|
||
列出聊天室事件 | — |
使用用户身份验证时:
|
对于 Chat 应用互动事件
下表列出了用户与 Chat 应用互动的常见方式,以及是否需要进行身份验证:
场景 | 无需身份验证 | 支持用户身份验证 | 支持应用身份验证 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
接收来自以下服务的消息: |
|
|||||||||||||||
回复消息: |
|
|||||||||||||||
发送新消息: |
|
相关主题
- 如需大致了解 Google Workspace 中的身份验证和授权,请参阅了解身份验证和授权。
- 如需大致了解 Google Cloud 中的身份验证和授权,请参阅身份验证概览。
- 如需详细了解服务帐号,请参阅服务帐号。
- 如需详细了解 Google API 如何使用 OAuth 2.0,请参阅使用 OAuth 2.0 访问 Google API。
- 使用用户凭据或服务帐号设置身份验证和授权。