适用于 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 的基本流程如下所示:
- 您的 Action 会请求用户同意访问其 Google 个人资料。
- 用户表示同意后,您的 Action 会收到一个包含用户的 Google 个人资料信息的 Google ID 令牌。
- 验证并解码令牌,以读取配置文件内容。如果您使用 Node.js 版 Actions on Google Fulfillment 库,它会为您验证和解码令牌。
您的 Action 会使用此令牌来检查系统中是否存在用户的 Google 个人资料信息。
- 如果有,则表示用户已使用其 Google 帐号登录您的系统。用户可以使用与其 Google 帐号相关联的身份继续与 Google 助理对话。
如果没有,则用户可以使用 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 会询问他们要点些什么。您还可以询问用户是否希望将最近的顺序设置为正常顺序。