要将Smart Lock for Passwords集成到您的Android应用中,您必须将对凭据API的调用添加到应用的启动和登录流程中。下图显示了使用Smart Lock设置密码的典型Android应用的流程。
尽管有很多方法可以成功地集成Smart Lock for Passwords,并且集成的细节取决于应用程序的结构和用户体验,但是对于大多数应用程序,建议遵循以下流程。使用此流程的应用程序具有以下用户体验优势:
- 保存了单个凭据的现有服务用户将立即登录,打开应用程序后,他们将直接进入登录视图。
- 保存了多个凭据的用户或禁用自动登录的用户在进入应用程序的登录视图之前只需要响应一个对话框即可。
- 没有保存的凭据或尚未注册的用户可以单击一下以选择其名称和电子邮件,然后智能地发送到登录或注册视图,并预先填写此信息。
- 用户注销后,该应用程序可确保他们不会自动重新登录。
检索凭证
- 应用启动时,如果尚未登录任何用户,请调用
CredentialsClient.request()
。 - 如果
Task
成功,请使用getResult().getCredential()
获取用户的凭据,然后使用它们登录。 - 如果
Task
失败并且异常是ResolvableApiException
的实例,并且getStatusCode()
返回RESOLUTION_REQUIRED
,则需要用户输入才能选择凭据。调用startResolutionForResult()
提示用户选择一个已保存的帐户,然后调用getParcelableExtra(Credential.EXTRA_KEY)
获取用户的凭据并使用它们登录。
保存凭证
如果
Task
因ApiException
失败而getStatusCode()
返回SIGN_IN_REQUIRED
,则用户没有保存的凭据,必须使用当前的登录或注册流程手动登录或手动注册。用户成功完成登录后,您可以为用户提供保存其凭据以供将来检索的机会(步骤5)。您可以通过检索登录提示(例如用户的电子邮件地址)来帮助用户更快或更轻松地登录或注册。用户可以选择提示,并跳过键入其凭据的操作。如果您的应用要求用户登录,则您可以选择在初始凭据请求失败后立即检索提示(否则,您可以等到用户开始登录或注册流程之后)。
- 调用
CredentialsClient.getHintPickerIntent()
并启动意图以提示用户选择一个帐户,然后调用getParcelableExtra(Credential.EXTRA_KEY)
获得登录提示。 - 如果提示的用户ID与现有用户匹配,则用它预先填写登录表单,然后让用户输入密码进行登录。
- 如果提示的用户ID与现有用户不匹配,请使用用户的ID和名称预先填写注册表单,然后让用户创建一个新帐户。
- 调用
用户成功登录或创建帐户后,请使用
CredentialsClient.save()
保存用户ID和密码。如果用户使用诸如Google登录之类的联合身份提供者登录,请创建以用户的电子邮件地址为ID的
Credential
对象,并使用setAccountType
指定身份提供者。
登出
- 当用户注销时,请调用
CredentialsClient.disableAutoSignIn()
以防止用户立即重新登录。禁用自动登录还可以使用户轻松地在帐户之间进行切换,例如,在工作帐户和个人帐户之间,或在帐户之间进行切换在共享设备上-无需重新输入其登录信息。
准备将Smart Lock for Passwords集成到您的应用程序中了吗?开始吧。