基于 OAuth 的 Google 登录“化繁为简”将 Google 登录功能添加到 基于 OAuth 的账号关联。如果您在 Action 中使用这种关联类型,则 该流程从 Google 登录开始,您可以通过 Google 登录 您的系统中已存在个人资料信息。如果不支持,则使用标准的 OAuth 流程 。通过提供这两种关联类型的组合,您的用户可以 在 Action 中使用 Google 账号或非 Google 账号。如果 也可以使用自己的 Google 个人资料创建一个新账号 信息。
如果存在以下任何一种情况,则建议使用“精简关联”作为账号关联解决方案 以下规则适用:
- 你有一个跨多个平台(例如,如果你的 操作支持 Android 应用)。
- 您已经有身份验证系统,并且您希望允许用户 将其身份与非 Google 账号相关联。例如,如果您提供 并且希望确保用户不会失去 积分。
要验证“精简关联”解决方案是否适合您,请参阅 选择账号关联类型页面。
关键词
在了解“精简关联”的工作原理之前,请先熟悉一下 并替换为以下字词:
- Google ID 令牌:经过签名的用户身份断言,其中包含 用户的 Google 个人资料基本信息(用户的姓名、电子邮件地址和 个人资料照片)。Google ID 令牌是 JSON 网络令牌 (JWT)。以下是已解码令牌的示例:
{
"sub": 1234567890, // The unique ID of the user's Google Account
"iss": "https://accounts.google.com", // The token's issuer
"aud": "123-abc.apps.googleusercontent.com", // Client ID assigned to your Actions project
"iat": 233366400, // Unix timestamp of the token's creation time
"exp": 233370000, // Unix timestamp of the token's expiration time
"name": "Jan Jansen",
"given_name": "Jan",
"family_name": "Jansen",
"email": "jan@gmail.com", // If present, the user's email address
"locale": "en_US"
}
user.verificationStatus
:由系统设置的属性,用于指示 当前会话包含经过验证的用户。user.accountLinkingStatus
:由系统设置的属性,用于指示 当前会话中的用户拥有关联的身份。账号关联系统场景:实现确认的预定义场景 账号关联流程,并且可以根据具体应用场景进行自定义。
授权代码流程:您可以通过 简化了关联流程。此流程需要两个端点:
- 授权端点:呈现登录界面的端点 尚未登录的用户它会记录已同意 以短期授权代码的形式请求访问权限。
- 令牌交换端点:此端点负责两种类型
广告交易平台:
<ph type="x-smartling-placeholder">
- </ph>
- 使用授权代码交换长期刷新令牌 和短期有效的访问令牌这种交换会在用户 系统会完成账号关联流程
- 使用长期刷新令牌交换短期访问 令牌。当 Google 需要新的访问令牌时,就会进行这种交换 因为它已过期。
隐式代码流程:您可以通过 简化了关联流程。此流程只需要一个授权端点。 在此流程中,Google 会在用户的 。如果登录成功,您将向 Google。现在,此访问令牌包含在从 与你的 Action 搭配使用。
访问令牌:授权您的服务访问 用户数据。访问令牌与每个用户相关联。
刷新令牌:每次 短期有效的访问令牌已过期。
前提条件
若要使用“精简”关联类型,您需要满足以下条件:
- OAuth 2.0 服务器
令牌交换端点
必须扩展令牌交换端点,以增加对 Google 的 用于通过 ID 令牌自动关联和创建账号的协议 (即,将
intent=get
和intent=create
参数添加到 此端点)。
工作原理
本部分介绍了精简关联的一般流程。 简化的关联流程部分介绍了 根据 a) 是启用还是停用 以及通过语音创建账号;b) 无论您是使用隐式方式还是 授权代码流程。
基本流程如下:
- 您的 Action 会请求用户同意访问其 Google 个人资料。
- 用户表示同意后,您的 Action 会收到一个 Google ID 令牌, 包含用户的 Google 个人资料信息。
- 您必须验证和解码令牌才能读取个人资料内容。
- 您的 Action 会使用此令牌来检查用户的 Google 个人资料
信息。
- 如果包含,则表示该用户已使用其 Google 账号,而 Google 助理会将用户的身份与其关联的 Google 账号。用户可以继续对话 已关联孩子的 Google 助理。
- 如果没有,请参阅第 5 步。
- 用户可以:a) 使用 Google 个人资料创建新账号 或者 b) 使用其他账号登录您的系统。通过 向用户显示的选项会有所不同 禁止通过语音创建账号。如果用户选择 系统,则标准 OAuth 流程随即开始。
- 用户创建新账号或使用其他提供方登录后, 您的服务会向 Google 返回一个访问令牌。(如果您使用的是 授权代码流程中,您的服务也会返回一个刷新令牌。)
- 用户现在可以通过 已关联账号。
简化了关联流程
本部分介绍了使用精简关联可执行的各种流程。 以下图表介绍了使用授权代码流程时的流程 而不是隐式代码流,并且假定您使用的是 Actions Builder。
每个流程在用户调用您的 Action 后都包含以下常见步骤:
在上面的流程中,您将过渡到账号关联系统场景,
自定义的理由。场景请求用户授予权限
Google 个人资料信息。在用户同意后,Google 助理会
包含 user@gmail.com
的个人资料信息的请求。
此时间点之后的流程因您是否配置了账号而异 以及用户的信息是否已存在于 Google Cloud 中 系统。以下各部分分别介绍了这些流。
启用了语音账号创建功能的流程
本部分详细介绍了启用账号后可能发生的账号关联流程 通过语音创建账号。
流程 1:用户信息存在于您的系统中
在这种情况下,由 user@gmail.com
表示的用户存在于您的后端,
这样您的令牌交换端点就会为用户返回一个令牌。用户的
您的 Action 中所用的身份现在已与其 Google 账号相关联。用户的
原始请求(“Order my normal”)与用户 intent order_drink.
匹配
然后,webhook 会处理匹配 intent 的执行,并查询
数据库中的user@gmail.com
正常顺序。然后,用户可以
与 Google 助理对话
流程 2:用户信息不存在,且用户创建了账号
因为您已通过语音启用了账号创建功能,但user@gmail.com
却没有这么做
Google 助理会询问用户是否需要
以下任意一项:
a) 使用您的 Google 个人资料信息在您的系统上创建一个新账号; 这通过语音完成
b) 使用其他账号登录您的系统
在这种情况下,用户选择通过语音创建新账号。Google 通话 向您的服务的令牌交换端点发送创建账号的请求。 此请求包含 Google ID 令牌,该令牌包括所需的组件 以创建新账号。然后,您可以使用此令牌中的信息 (用户的姓名和电子邮件地址)为用户创建账号。
创建账号后,您的服务会返回一个访问令牌并刷新
令牌。用户在您的 Action 中的身份现在为
与其 Google 账号关联。用户的原始请求(“按常规方式订购”)
匹配用户意图order_drink.
您的网络钩子随后会处理
所匹配意图的执行方式,并向您的数据库查询
user@gmail.com
的常规顺序,由于用户是新用户,因此该顺序尚不存在。
然后,您的 Action 可以询问用户想要点什么。
流程 3:用户信息不存在,且用户使用其他账号登录
你启用了通过语音创建账号的功能,因此 Google 助理会询问用户 执行以下任一操作:
a) 使用您的 Google 个人资料信息在您的系统上创建一个新账号; 这通过语音完成
b) 使用其他账号登录您的系统
在这种情况下,用户选择使用其他账号登录 启动标准 OAuth 流程。如果该流程是从纯语音设备开始的, Google 将执行传递给手机。然后,Google 会打开 您的授权端点,以及根据您的 配置,用户可以选择是否 a) 使用 不使用 Google 登录功能的现有账号;或 b) 创建一个新账号 使用另一家提供商。有关 OAuth 流程的详情,请参阅 OAuth 关联概念指南。
验证用户的凭据后,您的服务会返回一个访问令牌
并向 Google 提供刷新令牌您的 Action 中的用户身份现已关联
非 Google 账号。用户的原始请求(“按常规方式订购”)匹配
用户 intent order_drink.
。然后,webhook 会处理
匹配 intent 并向数据库查询 user@gmail.com
的正常顺序,
尚不存在,因为用户是新用户。然后,您的 Action 可以请求
告诉他们要点什么,或者请他们安排正常点餐时间。
停用了语音账号创建功能的流程
本部分详细介绍了停用后可能发生的账号关联流程 通过语音创建账号。
流程 4:用户信息不存在
您没有启用通过语音创建账号的功能,并且您的 因此标准 OAuth 流程随即开始。Google 助理会打开你的 用户浏览器中的授权端点(如果该流程开始于纯语音) 设备,Google 会将执行传递给带有屏幕的设备)。用户可以 选择:a) 使用其他提供商登录(如果他们已注册 或 b) 创建一个新账号 其他提供商。有关 OAuth 流程的详情,请参阅 OAuth 关联概念指南。
验证用户的凭据后,您的服务会返回一个访问令牌
并向 Google 提供刷新令牌您的 Action 中的用户身份现已关联
非 Google 账号。用户的原始请求(“按常规方式订购”)匹配
用户 intent order_drink.
。然后,webhook 会处理
匹配 intent 并向数据库查询 user@gmail.com
的正常顺序,
尚不存在,因为用户是新用户。然后,您的 Action 可以请求
设置其正常顺序。