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