如果没有“new”,则无法调用 AngularFire 身份验证持久性

Har*_*len 6 firebase firebase-authentication angularfire2 angular rxfire

我正在尝试使用以下代码在 AngularFire 中实现持久性身份验证:

constructor(private auth: Auth, private router: Router) {
    if (auth.currentUser) this.router.navigate(this.redirect);
  }

  async loginWithGoogle() {
    const provider = new GoogleAuthProvider();

    try {
      await setPersistence(this.auth, browserLocalPersistence);
      await signInWithPopup(this.auth, provider);
      this.message = 'Sign in successful';
      await this.router.navigate(this.redirect);
    } catch (error: any) {
      console.error(error);
      if (error.code) {
        this.message = `${error.code}: ${error.message}`;
      } else {
        this.message = 'There was a problem signing in. Please try again.';
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是,无论方法的位置如何,我总是收到此错误setPersistence

Class constructor BrowserLocalPersistence cannot be invoked without 'new'
Run Code Online (Sandbox Code Playgroud)

我按照文档(https://firebase.google.com/docs/auth/web/auth-state-persistence)进行操作;我究竟做错了什么?

我正在使用 Angular 13、Angularfire 7 和 Firebase 9。

Fra*_*len 0

来自JavaScript/web SDK 中关于持久身份验证状态持久性的文档:

对于 Web 应用程序,默认行为是即使在用户关闭浏览器后也保留用户的会话。

我强烈建议仅setPersistence在您知道自己有需要它的特定用例时才致电。在大多数浏览器上,Firebase 已经在重新加载之间保留了身份验证状态,而无需调用setPersistence.

  • 只需调用signInWithEmailAndPassword(身份验证,电子邮件,密码);在重新加载之间不保留登录。 (3认同)