Google 登录概念指南

适用于 Google 助理的 Google 登录 (GSI) 可为用户提供最无缝的关联体验,也是开发者最容易实现的流程。借助 GSI,您的 Action 可以在对话期间请求访问用户的 Google 个人资料,并在用户同意的情况下接收用户的姓名、电子邮件地址和个人资料照片。然后,您的 Action 可以使用这些信息来检查用户是否在您的系统中拥有 Google 帐号。否则,您的 Action 会根据用户的 Google 个人资料信息询问他们是否要在您的系统中创建新帐号。

如果存在以下任一情况,我们建议您采用 GSI 进行帐号关联解决方案:

  • 您目前还没有身份验证系统,并且/或者您希望所有用户都有 Google 账号。例如,如果您的 Action 专门以 Google 助理为目标平台,那么您的所有用户都应该会拥有 Google 帐号。
  • 您有一个现有的身份验证系统,只希望关联使用其 Google 帐号登录您系统的用户。

如需验证 GSI 是适合您的解决方案,请参阅选择帐号关联类型页面。

关键术语

在了解 GSI 的工作原理之前,请先熟悉以下术语:

  • 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:系统设置的一个属性,用于指示当前会话中的用户是否具有关联的身份。

  • 帐号关联系统场景:实现帐号关联确认流程的预定义场景,可自定义以适应特定用例。

运作方式

GSI 的基本流程如下所示:

  1. 您的 Action 会请求用户同意访问其 Google 个人资料。
  2. 用户表示同意后,您的 Action 会收到一个包含用户的 Google 个人资料信息的 Google ID 令牌。
  3. 验证并解码令牌,以读取配置文件内容。如果您使用 Node.js 版 Actions on Google Fulfillment 库,它会为您验证和解码令牌。
  4. 您的 Action 会使用此令牌来检查系统中是否存在用户的 Google 个人资料信息。

    1. 如果有,则表示用户已使用其 Google 帐号登录您的系统。用户可以使用与其 Google 帐号相关联的身份继续与 Google 助理对话。
    2. 如果没有,则用户可以使用 Google ID 令牌中包含的信息在您的系统中创建新帐号。然后,用户可以通过关联的新帐号继续与 Google 助理对话。

Google 登录流程

本部分介绍了使用 Google 登录功能可执行的各种流程。

流程 1:用户信息存在于您的系统中

下图显示了当您的系统中已存在用户信息时 GSI 发生的端到端流程:

在这种情况下,您需要过渡到帐号关联系统场景,并提供自定义理由。此场景会请求用户授予访问其 Google 个人资料信息的权限。

用户同意后,Google 助理会发送一个包含 user@gmail.com 个人资料信息的请求。在这种情况下,user@gmail.com 的 Google ID 令牌中包含的信息与您系统中的帐号匹配,因此您 Action 中用户的身份会自动与该帐号关联。然后,webhook 可以从数据库中读取用户的惯常顺序并相应地做出响应。

流程 2:您的系统中不存在用户信息

下图显示了当您的系统中不存在用户信息时 GSI 发生的端到端流程:

在这种情况下,user@gmail.com 的 Google ID 令牌中包含的信息与您系统中的帐号不匹配,因此 Google 助理会询问用户是否要创建新帐号。用户可以通过语音完成帐号创建流程,而无需转移到经过筛查的设备上。

如果用户同意创建帐号,您的服务将使用 ID 令牌中的信息(用户的姓名和电子邮件地址)为用户创建帐号。创建帐号后,用户在您的 Action 中的身份会关联到用户的新 Google 帐号。

在这种情况下,用户没有常规订单,因为他们是第一次使用服务,因此您的 Action 会询问他们要点些什么。您还可以询问用户是否希望将最近的顺序设置为正常顺序。