我正在将Google Smart Lock实施到我的应用中。我已经让它通过一个帐户自动记录用户,并且运行良好。
但是,一旦我向混音中添加第二个帐户,它总是显示分辨率对话框以选择我想要的帐户。即使在我选择并帐户并重新启动应用程序之后,这仍然显示。
一旦我选择了我想要智能锁使用的帐户,此对话框就不应再显示了,那么它仍有什么可能的原因显示?
- 谢谢你
答案 0 :(得分:3)
我在Google的Smart Lock团队工作,希望这能回答您的问题:
如您所知,如果调用CredentialsApi.request()
API方法并且该应用有多个已保存的帐户,则存储在设备上的一个或多个Google帐户中(或已自动登录)用户因其中一个帐户而被停用或由开发人员致电CredentialsApi.disableAutoSignIn()
),API将使用CredentialRequestResult
getStatusCode()
来回调RESOLUTION_REQUIRED
,这意味着该用户界面必须显示以供用户选择要继续的凭据。 startResolutionForResult()
将显示对话框,如API overview。
一旦应用程序拥有凭证,无论是通过自动登录还是在用户从对话框中选择了凭据后,大多数应用都会使用此凭据将用户签到后端服务并建立会话应用程序的cookie或令牌,并独立于Smart Lock API进行管理。因此,大多数应用在用户登录并且当前会话存在后不会再次调用API,因此在初始登录后该对话框不会再次显示。
当用户注销时,调用CredentialsApi.disableAutoSignIn()
将阻止用户在再次启动身份验证活动时自动重新登录,并且当用户选择禁用状态时,将自动管理并清除禁用状态从凭证选择器UI或成功CredentialsApi.save()
调用进行输入,此时,建立用户会话,并且在签出事件之前无需再次调用API。
我认为这个问题的混乱源于用户登录后调用API,他们可能已经有了活动会话。那是你的意图吗?如果您需要在用户检索或输入密码后管理设备上的应用凭据,则可以使用Android上的Account Manager,这与任何Google帐户或API无关(而Smart Lock则是旨在保存云中的登录信息,以便在新设备或单独设备上跨平台使用以引导身份验证过程。
将来,如果存储多个帐户并且总是选择相同的帐户,我们正在考虑记住用户偏好,从而允许自动登录,但是现在,当有多个已保存的帐户可用时,始终需要用户操作
如果您需要更多信息或澄清,或者如果这不能回答您的问题,请发表任何问题或反馈意见!
答案 1 :(得分:0)
如果您有多个帐户,则始终会显示此解决方案对话框。 看看这个 :
来自:https://developers.google.com/identity/smartlock-passwords/android/overview