1

我正在将 Google Smart Lock 应用到我的应用中。我已经让它使用单个帐户自动登录用户并且效果很好。

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

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

-谢谢

4

2 回答 2

3

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

  • 正如您所注意到的,如果CredentialsApi.request()调用 API 方法并且应用程序有多个已保存的帐户,这些帐户存储在设备上的一个或多个 Google 帐户中(或者自动登录已被用户禁用其帐户之一或开发人员通过调用) 然后 API 将使用with of 进行CredentialsApi.disableAutoSignIn()回调,这意味着必须显示 UI 以供用户选择凭据以继续。将显示对话框,如API 概述中所述。CredentialRequestResultgetStatusCode()RESOLUTION_REQUIREDstartResolutionForResult()

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

  • 当用户注销时,调用CredentialsApi.disableAutoSignIn()将阻止用户在再次启动身份验证活动时自动重新登录,并且当用户从凭据选择器 UI 中选择条目或成功CredentialsApi.save()调用时,将自动管理和清除禁用状态已完成,此时,用户会话已建立,无需再次调用 API,直到出现注销事件。

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

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

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

于 2015-12-30T22:47:36.890 回答
0

当您有多个帐户时,您将始终显示此解决方案对话框。看看这个 : https://developers.google.com/identity/smartlock-passwords/android/images/smartlock-passwords-flow.png

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

于 2015-12-30T17:05:41.660 回答