【问题标题】:Android Smart Lock for Passwords sign out用于密码的 Android Smart Lock 退出
【发布时间】:2018-04-15 09:56:38
【问题描述】:

Google 在文档中声明“当用户退出时,调用 CredentialsApi.disableAutoSignIn() 以防止用户立即重新登录 (...)”。

会发生这样的事情:

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

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

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

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

【问题讨论】:

    标签: android google-api google-smartlockpasswords


    【解决方案1】:

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

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

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

    • 在后续应用启动时,您仍然可以尝试自动登录(例如,用户在 Web 或其他设备上注册然后打开应用后),但如果不是第一次运行,则不解决结果(即不显示选择器,只需丢弃 Intent 以供解析或保留以供以后使用)

    • 如果用户明确触发登录操作(即点击登录按钮),您可以使用意图,或再次调用 API 帮助他们重新登录帐户,或在两者之间切换帐号

    抱歉,这需要你有一点状态; CredentialsApi.disableAutoSignIn() 设置登录禁用状态,但不跟踪用户对应用的登录状态(这取决于应用开发者的逻辑,必须由应用管理)。

    希望对您有所帮助/有意义,请随时离开 cmets。看看我们是否可以为此向文档添加一些指导!

    【讨论】:

    • 谢谢史蒂文。是的,实现了类似的方法,用户状态由应用程序控制: - 在主 Activity 上,始终尝试登录用户,除非用户之前手动退出; - 在登录活动(与家庭不同的活动)上,始终尝试登录用户,即使他之前手动退出。就是这样。我只在 SharedPrefereces 中存储一个布尔值“userHasSignedOut”来控制状态。
    猜你喜欢
    • 2015-08-16
    • 2016-04-18
    • 2018-07-30
    • 1970-01-01
    • 2016-03-28
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多