身份验证和授权分别用于验证身份和访问资源的机制。本文档简要介绍了 Chat 应用和 Chat API 请求的身份验证和授权机制。
流程概览
下图显示了 Google Chat 身份验证和授权的简要步骤:

配置 Google Cloud 项目、启用 Chat API 并配置 Chat 应用:在开发过程中,您需要创建一个 Google Cloud 项目。在 Google Cloud 项目中,您可以启用 Chat API、配置 Chat 应用并设置身份验证。如需了解详情,请参阅在 Google Workspace 上开发应用和构建聊天应用。
调用 Chat API:当您的应用调用 Chat API 时,它会向 Chat API 发送身份验证凭据。如果您的应用使用服务帐号进行身份验证,凭据将作为应用代码的一部分发送。如果您的应用需要使用尚未获得授权的用户身份验证来调用 Chat API,则系统会提示用户登录。
请求资源:您的应用使用您在设置身份验证时指定的范围请求访问权限。
征求用户同意:如果您的应用以用户身份进行身份验证,Google 会显示 OAuth 权限请求页面,以便用户决定是否授权您的应用访问请求的数据。使用服务帐号进行身份验证不需要用户同意。
发送已批准的资源请求:如果用户同意授权范围,您的应用会将凭据和用户批准的范围捆绑到请求中。该请求会发送到 Google 授权服务器,以获取访问令牌。
Google 返回一个访问令牌:该访问令牌包含已授予的范围列表。如果返回的范围列表比请求的范围限制更严格,您的应用会关闭受该令牌限制的所有功能。
访问请求的资源:您的应用使用 Google 提供的访问令牌调用 Chat API 并访问 Chat API 资源。
获取刷新令牌(可选):如果您的应用必须在单个访问令牌的生命周期结束后访问 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 应用的身份进行身份验证即可接收和同步响应互动事件。
每当用户与 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.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 中查看消息和回应。 |
上表中的范围根据以下定义表示其敏感度:
非敏感 - 这些范围提供最小的授权访问,只需要基本的应用验证。如需了解此要求,请参阅验证准备步骤。
敏感 - 获得用户授权后,应用可通过这些范围访问特定用户的 Google 数据。您需要进行额外的应用验证。如需了解此要求,请参阅请求敏感范围的应用执行的步骤。
受限 - 这些范围提供对 Google 用户数据的广泛访问权限,并要求您完成受限范围验证流程。如需详细了解此要求,请参阅 Google API 服务:用户数据政策和针对特定 API 范围的其他要求。另请参阅请求受限范围的应用的步骤。
如果您的应用需要访问任何其他 Google API,您也可以添加这些范围。如需详细了解 Google API 的范围,请参阅使用 OAuth 2.0 访问 Google API。
如需详细了解 Google Workspace API 的范围,请参阅配置 OAuth 权限请求页面并选择范围。
所需身份验证的类型
Chat 应用可以通过以下两种方法使用 Chat API 进行身份验证和授权:用户凭据或服务帐号。
通过用户凭据授权,Chat 应用可以代表用户访问用户数据并完成操作。OAuth 范围指定已获授权的数据和操作。但是,这些 Chat 应用无法公开发布。如需了解详情,请参阅发布 Google Chat 应用。
通过应用授权,Chat 应用可以使用服务帐号凭据作为应用访问 API。应用授权始终使用 chat.bot
授权范围。
如果您是网域管理员,则可以授予全网域授权,以授权应用的服务帐号访问您用户的数据,而无需每位用户同意。配置全网域授权后,您可以使用您的服务帐号进行 API 调用以模拟用户帐号。虽然使用服务帐号进行身份验证,但全网域授权会模拟用户,因此被视为用户身份验证。任何需要用户身份验证的功能都可以使用全网域授权。
在决定为特定 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。
- 使用用户凭据或服务帐号设置身份验证和授权。