总是显示 Smart Lock 多帐户解析

Smart Lock multi account resolution always showing up

我正在我的应用中实施 Google Smart Lock。我已经让用户使用一个帐户自动登录并且运行良好。

但是,一旦我将第二个帐户添加到组合中,它总是会显示分辨率对话框以选择我想要的帐户。即使在我选择和帐户并重新启动应用程序后,这仍会继续显示。

一旦我选择了我希望智能锁使用的帐户,这个对话框就不会再显示了,那么它仍然显示的可能原因是什么?

-谢谢

当您有多个帐户时,您将始终显示此解决方案对话框。 看看这个 :

来自 : https://developers.google.com/identity/smartlock-passwords/android/overview

我在 Google 的 Smart Lock 团队工作,希望这能回答您的问题:

  • 正如您所注意到的,如果调用了 CredentialsApi.request() API 方法并且应用程序有多个保存的帐户,存储在一个或多个 Google设备上的帐户(或自动 sign-in 已被用户禁用其帐户之一或开发人员通过调用 CredentialsApi.disableAutoSignIn() 禁用)然后 API 将回调 CredentialRequestResultgetStatusCode() of RESOLUTION_REQUIRED,这意味着必须显示 UI 用户才能选择凭据才能继续。 startResolutionForResult() 将显示对话框,如 API overview.

  • 中所述
  • 一旦应用程序拥有凭据,无论是来自自动 sign-in 还是在用户从对话框中选择一个凭据后,大多数应用程序将使用此凭据让用户登录后端服务并使用应用程序的 cookie 或令牌建立会话,并独立于 Smart Lock API 进行管理。因此,大多数应用程序不会在用户登录后再次调用 API 并且存在当前会话,因此在初始 sign-in.

    之后不会再次显示该对话框
  • 当用户退出时,调用CredentialsApi.disableAutoSignIn()会阻止用户在再次启动认证activity时自动重新登录,自动禁用状态当用户从凭据选择器中选择条目 UI 或调用成功 CredentialsApi.save() 时,管理和清除,此时,用户会话已建立,无需调用 API 直到 sign-out 事件。

我认为这个问题中的混淆源于在用户登录后调用 API 并且他们可能已经有一个活动会话。那是你的意图吗?如果您需要在用户检索或输入密码后管理设备上应用程序的凭据,您可以使用 Android 上的 Account Manager,它独立于任何 Google帐户或 APIs(而 Smart Lock 旨在将 sign-in 信息保存在云中,以便跨平台在新设备或单独设备上用于 bootstrap 身份验证过程)。

将来,如果存储了多个帐户并且总是选择同一个帐户,我们会考虑记住用户偏好,从而允许自动 sign-in,但现在,当有多个帐户时,始终需要用户操作多个保存的帐户可用。

如果您需要更多信息或说明,或者如果这不能回答您的问题,请留下任何问题或反馈的评论!