Firebase PWA 不会在移动浏览器中对离线用户进行身份验证(在桌面上工作正常)

Dan*_*own 5 javascript reactjs firebase-authentication progressive-web-apps

我正在使用 Firebase 服务开发 React PWA。我所说的 PWA 是指它使用服务工作人员,启用了 Firestore 离线数据持久性,并且只要会话数据存储在浏览器中,就应该让用户登录。

我遇到的问题是用户经过身份验证后,我希望用户能够关闭 wifi 和移动数据,并能够再次打开应用程序,并且应用程序将用户视为经过身份验证的用户。这一切在桌面浏览器 Chrome 和 Firefox 上运行良好。(由于某种原因不在 Safari 上)

但是,当我使用最新的 Chrome 和 Firefox 移动浏览器时,服务工作人员工作正常,但在关闭 wifi 和移动数据后,该应用程序不会将用户视为已登录,并且控制台中会出现一条错误消息,内容为“内部身份验证错误”。不幸的是,它没有提供比这更多的信息。

为了检查用户,我在 App.tsx 中使用 onAuthStateChanged 侦听器,如下所示:

const auth = getAuth();

onAuthStateChanged(auth, (user) => {
  if (user) {
    setCurrentUser(user.email);
  } else {
    setCurrentUser(null);
  }
});
Run Code Online (Sandbox Code Playgroud)

您可以在这里亲自尝试:

电子邮件:user@test.com 密码:testpassword123

https://ravenstaging--review-dev-brown-4wcbt6-7jxhpu9l.web.app/

任何帮助/信息将不胜感激。谢谢你!

Dan*_*own 3

发生此错误的原因是,如果调用 getAuth() 或使用 browserPopupRedirectResolver 定义initializeAuth,则离线时在移动设备和 Safari 中将会出错。您可以在此处阅读如何修复它:https ://github.com/firebase/firebase-js-sdk/issues/5529