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

Firebase PWA won't authenticate offline users in mobile browsers (works fine on desktop)

我正在使用 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);
  }
});

你可以在这里自己试试:

邮箱:user@test.com 密码:testpassword123

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

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

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