我的场景很简单。我创建了一个 Firebase 网络应用并使用 Google 帐户进行连接。问题是每次刷新页面时我都需要重新登录,步骤如下:
- 初始化 Firebase
- 使用 Google 注册
- 检查当前用户 - 它是经过身份验证的 Google 用户
- 刷新页面
- 初始化 Firebase
- 检查当前用户 - 它是未定义的
代码很简单:
firebase.initializeApp(config);
var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider);
...
public onAuthStateChanged(context: any, user: any) {
if (user) { ...
...
//currentUser is defined
get currentUser(): any {
return firebase.auth().currentUser;
}
刷新页面
//currentUser is undefined
get currentUser(): any {
return firebase.auth().currentUser;
}
...
if(!currentUser) {
firebase.auth().signOut();
firebase.initializeApp(config);
}
我知道 Firebase 会话的持久性选项,但我的理解是这种行为不是默认行为。参照。文档:
https://firebase.google.com/docs/auth/web/auth-state-persistence
我将这一行添加到我的代码中以防万一,这没有什么区别:
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
我还检查了匿名身份验证是否会发生同样的情况。