gpt4 book ai didi

javascript - 刷新后,firebase Auth当前用户返回null

转载 作者:行者123 更新时间:2023-12-03 17:54:07 25 4
gpt4 key购买 nike

这是我在个人资料页面上的代码,当我从 AuthService 的登录方法重定向时,这第一次工作正常

const user = firebase.auth().currentUser;
if (user != null) {
this.name = user.displayName;
this.uid = user.uid;
} else {
this.name = "Unknown";
}

但是,如果我刷新页面或转到任何其他页面并返回此个人资料页面,则 currentUser 变为 null。

这是我的身份验证服务代码。
import * as firebase from "firebase/app";
import { auth } from "firebase/app";

async googleSignin() {
firebase
.auth()
.setPersistence(firebase.auth.Auth.Persistence.LOCAL)
.then(async () => {
const provider = new auth.GoogleAuthProvider();
const credential = await this.afAuth.auth.signInWithPopup(provider);
this.updateUserData(credential.user);
this.router.navigate(["/profile"]);
return;
});
}

为什么我失去了当前用户?我什至还添加了 Persistence.LOCAL。

最佳答案

当您导航到新页面时,您将重新加载 Firebase 身份验证 SDK。此时 Firebase 会自动刷新当前用户的身份验证状态,但这可能需要往返服务器。当你的`firebase.auth().currentUser 运行时,刷新显然还没有完成。

因此,您应该使用 onAuthStateChange监听更改,如 getting the currently signed in user 上的文档所示:

firebase.auth().onAuthStateChanged(function(user) {
if (user != null) {
this.name = user.displayName;
this.uid = user.uid;
} else {
this.name = "Unknown";
}
});

关于javascript - 刷新后,firebase Auth当前用户返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58262209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com