【问题标题】:User authentication is not persisted on WebViewWebView 上不保留用户身份验证
【发布时间】:2018-03-22 11:39:10
【问题描述】:

我正在创建一个具有 WebView 的 Android 应用程序,该应用程序可以访问我使用 Firebase 托管托管的网站。

如果我使用电子邮件/密码凭据登录网站,然后刷新或导航到另一个页面,Firebase 会丢失我的登录信息。

我试图强制 Firebase 使用 firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL) 保留我的凭据,但它在 WebView 控制台中引发了此错误:

未捕获的错误:当前环境不支持指定的持久性类型。

附带说明一下,我尝试登录其他服务,例如 YouTube 和 Google,以查看是否是浏览器缓存问题,但会话仍然正常持续,即使在我刷新页面、导航或重新打开 Android 之后也是如此应用程序。

我还使用模拟器(运行 Android 8.0)和手机(Android 6.0)测试了 Android 应用。

有人知道这里发生了什么吗?

【问题讨论】:

  • 您是否使用firebase.auth().onAuthStateChanged 来获取Auth 状态?
  • @bojeil 是的,我是
  • 您是否在 web 视图中禁用了 web 存储?是否启用了 localStorage?
  • 我回家后会检查一下。但我很确定我没有禁用任何东西。只是按照此页面中的示例进行操作:developer.chrome.com/multidevice/webview/gettingstarted
  • 我最近没有做很多android开发,但我以前必须在webview上启用它:webview.getSettings().setDomStorageEnabled(true);

标签: android firebase webview firebase-authentication firebase-hosting


【解决方案1】:

您需要在 Web 视图中启用 DOM 存储,因为 Firebase 身份验证依赖于网络存储 (localStorage/indexedDB) 来存储身份验证状态。

webview.getSettings().setDomStorageEnabled(true);

【讨论】:

    猜你喜欢
    • 2020-10-19
    • 2019-04-06
    • 2021-12-23
    • 2021-09-04
    • 1970-01-01
    • 2012-04-25
    • 2019-12-26
    • 2023-03-28
    • 2015-09-14
    相关资源
    最近更新 更多