如果一键登录满足您的需求,请考虑改用它。 One Tap 具有更新的用户体验和其他改进。

Android 集成流程

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

如需将 Smart Lock(密码专用)集成到您的 Android 应用中,您必须将对 Credentials API 的调用添加到您的应用的启动和登录流程。下图显示了使用 Smart Lock(密码专用)的典型 Android 应用的流程。

虽然有许多方法可以成功集成 Smart Lock(密码专用),并且集成的具体细节取决于应用的结构和用户体验,但对于大多数应用,建议您遵循以下流程。使用此流程的应用具有以下用户体验优势:

  • 保存了单个凭据的服务中的现有用户会立即登录,他们在打开应用时将直接转到已登录的视图。
  • 保存了多个凭据或已停用自动登录的用户在转到应用的登录视图之前只需响应一个对话框。
  • 尚未保存凭据或尚未注册的用户只需点按一下即可选择其姓名和电子邮件地址,然后智能地将其发送至登录或注册视图,同时预填充此信息。
  • 当用户退出登录后,应用会确保他们不会自动重新登录。

Smart Lock 登录流程示意图

检索凭据

  1. 当应用启动时,如果没有用户登录,请调用 CredentialsClient.request()
  2. 如果 Task 成功,请使用 getResult().getCredential() 获取用户的凭据,然后使用这些凭据登录。
  3. 如果 Task 失败,并且异常是 ResolvableApiException 的实例并且 getStatusCode() 返回 RESOLUTION_REQUIRED,则需要用户输入才能选择凭据。调用 startResolutionForResult() 以提示用户选择已保存的帐号,然后调用 getParcelableExtra(Credential.EXTRA_KEY) 以获取用户的凭据并使用它们进行登录。

保存凭据

  1. 如果 Task 失败并显示 ApiException,并且 getStatusCode() 返回 SIGN_IN_REQUIRED,则表示用户没有已保存的凭据,必须使用当前登录或注册流程手动登录或注册。在用户成功完成登录之后,您可以为用户提供保存其凭据以供日后检索的机会(第 5 步)。

    通过检索登录提示(例如用户的电子邮件地址),您可以帮助用户更快、更轻松地登录或注册。用户可以选择此提示,而无需输入凭据。如果您的应用要求用户登录,您可以选择在初始凭据请求失败后立即检索提示(否则,您可以等到用户启动登录或注册流程)。

    1. 调用 CredentialsClient.getHintPickerIntent() 并启动 intent 以提示用户选择帐号,然后调用 getParcelableExtra(Credential.EXTRA_KEY) 以获取登录提示。
    2. 如果提示的用户 ID 与现有用户匹配,请使用该登录表单预填充登录表单,让用户输入密码即可登录。
    3. 如果提示的用户 ID 与现有用户不匹配,请使用用户 ID 和姓名预填充注册表单,让用户创建新帐号。
  2. 在用户成功登录或创建帐号后,使用 CredentialsClient.save() 保存用户 ID 和密码。

    如果用户通过联合身份提供商(例如 Google 登录)登录,请使用用户的电子邮件地址作为 ID 来创建 Credential 对象,并使用 setAccountType 指定身份提供商。

退出登录

  1. 当用户退出时,调用 CredentialsClient.disableAutoSignIn() 以防止用户立即重新登录。通过停用自动登录,用户还可以轻松地在帐号之间切换(例如,在工作帐号和个人帐号之间切换,或在共享设备上的帐号之间切换),而无需重新输入登录信息。

准备好将 Smart Lock(密码专用)集成到您的应用中吗? 现在就开始吧!