我正在我的应用程序中实施 Google Smart Lock。我已经用一个帐户自动登录用户,并且效果很好。
但是,一旦我将第二个帐户添加到组合中,它总是会显示分辨率对话框来选择我想要的帐户。即使在我选择帐户并重新启动应用程序后,这种情况仍然会出现。
一旦我选择了我想要智能锁使用的帐户,此对话框就不应该再显示,那么它仍然显示的可能原因有哪些?
-谢谢
我在 Google 的智能锁团队工作,希望这能回答您的问题:
正如你所注意到的,如果CredentialsApi.request()
API 方法被调用,并且应用程序有多个已保存的帐户,存储在设备上的一个或多个 Google 帐户中(或者用户已为其帐户之一禁用自动登录,或开发者通过调用禁用自动登录)CredentialsApi.disableAutoSignIn()
) 然后 API 将回调CredentialRequestResult
with getStatusCode()
of RESOLUTION_REQUIRED
,这意味着必须显示 UI 以便用户选择凭证才能继续。startResolutionForResult()
将显示对话框,如中所述API概览.
一旦应用程序拥有凭据(无论是通过自动登录还是在用户从对话框中选择一个凭据后),大多数应用程序将使用此凭据将用户登录到后端服务,并使用 cookie 或令牌建立会话。应用程序并独立于 Smart Lock API 对其进行管理。因此,大多数应用程序在用户登录且当前会话存在后不会再次调用 API,因此在初始登录后不会再次显示该对话框。
当用户退出时,调用CredentialsApi.disableAutoSignIn()
将阻止用户在再次启动身份验证活动时自动重新登录,并且当用户从凭据选择器 UI 中选择一个条目或成功选择一个条目时,将自动管理和清除禁用状态。CredentialsApi.save()
进行调用,此时,用户会话已建立,无需再次调用 API,直到发生注销事件。
我认为这个问题的困惑源于用户登录后调用 API,并且他们可能已经有一个活动会话。这是你的意图吗?如果您需要在用户检索或输入密码后管理设备上应用程序的凭据,您可以使用客户经理在 Android 上,它独立于任何 Google 帐户或 API(而 Smart Lock 旨在将登录信息保存在云中,以便在新的或单独的设备上跨平台使用,以引导身份验证过程)。
将来,我们正在考虑在存储多个帐户并且始终选择同一个帐户时记住用户首选项,从而允许自动登录,但现在,当有多个已保存帐户可用时,始终需要用户操作。
如果您需要更多信息或澄清,或者这不能回答您的问题,请留下任何问题或反馈的评论!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)