【问题标题】:Android Auth0 Lock Clear CacheAndroid Auth0 锁定清除缓存
【发布时间】:2017-02-20 15:45:08
【问题描述】:

我将 Auth0 的 Lock 集成为我的应用程序登录过程的一部分,以遵守 Auth0 登录的 Web 实现。

我按照Lock (Android) 存储库的README.md 中的说明进行操作,并且可以毫无问题地使用 Google 登录。

我面临的问题是我无法向 Auth0 或 Lock 表明我已将我的用户注销,因此当我重新 -登录。我目前将我的会话信息存储在SharedPreferences 中,我当前的注销程序是清除该数据。我可以导航回登录屏幕的 UI,但只要我触摸 Google 图标以通过 Google 登录,Auth0 就会针对我之前登录的用户进行身份验证,而不会提示我输入我的凭据。

有没有官方的方法可以用 Auth0 的 Lock 清除缓存?

【问题讨论】:

    标签: android google-signin auth0


    【解决方案1】:

    我建议您遵循Android Quickstart 指南,更具体地说,是关于session handling 的部分,其中描述了登录后维护用户会话的一种可能方法。

    会话处理部分的最后一部分是关于如何实现注销。提供的示例代码如下:

    private void logout() {
      // Clear credentials (depends on how you store them in the first place)
      setUserCredentials(null);
    
      // Navigate to Lock login screen
      startActivity(new Intent(this, LoginActivity.class));
    }
    

    请记住,setUserCredentials 特定于该特定样本,一般的想法是您将接收到的令牌存储在某处,然后为用户提供注销选项,这会触发令牌的清理和重定向到登录屏幕。

    【讨论】:

    • 我按照快速入门指南下载了您描述的示例。我发现的问题是对CredentialsManager 类的setUserCredentials(null); 方法调用仅从应用程序的SharedPreferences 中清除凭据。 Auth0 或 Lock 库似乎都没有引用这些共享首选项。即使我按照您建议的方式清除了凭据,我仍然无法选择下次尝试登录时要登录的 Google 帐户。
    • 我没有足够的Android SDK知识来提供猜测以外的任何东西,但在你的更新中你提到你可以进入登录屏幕,但选择谷歌后你会自动获得已登录。这可能是 Google 特定的,因为当您选择 Google 社交登录时,Lock 只会将身份验证委托给 Google。尝试使用其他类型的身份验证(用户名/密码)仅用于故障排除。
    • João Angelo,我们没有没有帐户的用户名/密码验证设置,我们只使用社交登录。话虽如此,我尝试使用 FB 帐户而不是 Google 帐户登录,并看到了同样的问题。我能够清除 webview 缓存,该缓存清除了应用程序中 webviews 的 cookie,这在 Lollipop+ 设备上有所帮助,但我有一台运行 KitKat 的设备,一旦登录,就永远不会提供使用其他帐户登录的选项,或验证该帐户的凭据。登录时,它会自动登录。
    • 我感觉到你的痛苦,我自己在 iOS 上遇到了这个问题。清除 webviews 的缓存是过去的答案。现在它不是一个选项,所以必须有某种可以翻转的开关。
    猜你喜欢
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    相关资源
    最近更新 更多