Android 用于密码的 Smart Lock 注销

Android Smart Lock for Passwords sign out

Google 在文档中指出 "when the user signs out, call CredentialsApi.disableAutoSignIn() to prevent the user from being immediately signed back in (...)".

事情是这样的:

  1. 用户仅存储了 1 个凭据。当他进入应用程序时,他会自动登录;
  2. 用户注销,CredentialsApi.disableAutoSignIn()被调用;
  3. 现在,每次用户进入应用程序时,他都不会自动登录,而是会看到一个选择器,尽管选择器只有 1 个选项,用于存储唯一的凭据。

这非常非常烦人。如果用户注销,他不应该每次都重新登录。即使他有超过 1 个证书。但是,我们暂时先关注他只有1个凭证的情况。

这是预期的行为吗?我很确定,当我在 1 月份测试此功能时,情况并非如此。现在我将此功能投入生产,如果这是预期的行为,也许我必须 在共享首选项中存储一个标志,用于检测用户何时注销。

请求凭据功能在应用程序的主要 activity 中,每次我去那里时,都会出现对话框选择器以请求登录。

不幸的是,您必须在您的应用程序中维护用户状态(我们最近没有对此行为进行任何更改,它一直都是这样)。

如果您的应用程序可以选择登录,以下是我们看到的一些应用程序实现的内容:

  • 跟踪这是否是设备上的第一个 运行(例如在共享首选项中),如果是,则自动触发登录并显示选择器,允许用户如果自动登录被禁用或他们有多个帐户,一键登录

  • 在随后的应用程序启动时,您仍然可以尝试自动登录(例如,在用户在网络或其他设备上注册然后打开应用程序之后),但如果结果是不是第一个 运行(即不显示选择器,只是丢弃 Intent 以供解决或稍后保留)

  • 如果用户明确触发登录操作(即单击登录按钮),您可以使用该 Intent,或再次调用 API 以帮助他们重新登录进入他们的帐户,或在帐户之间切换

抱歉,这需要您提供一些状态; CredentialsApi.disableAutoSignIn() 设置登录禁用状态,但不跟踪用户对应用程序的登录状态(这取决于应用程序开发人员的逻辑,必须由应用程序管理)。

希望有帮助/有意义,请随时发表评论。看看我们是否可以为此向文档添加一些指导!