Angular Firebase:页面刷新后无法获取当前用户

时间:2018-07-16 03:43:55

标签: angular firebase firebase-authentication

我正在尝试在Firestore中检索包含游戏当前用户(玩家)数据的文档;我可以获取该文档,但是,刷新页面后,firebase.auth().currentUser就会为空。如果有所不同,将以匿名方式登录用户。我试图改变持久性,似乎没有改变任何东西

在我的gameService.ts文件中:

private getCurrentPlayer(gameId: string){
    return this.afs.doc(`games/${gameId}/players/${firebase.auth().currentUser.uid}`);
}

在我的component.ts文件中:

constructor(private gameService: GameService, private route: ActivatedRoute) 
{
    gameService.currentPlayer.valueChanges().subscribe(user =>{
      console.log(user)
      this.currentPlayer = user;
    });   

}

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

2 个答案:

答案 0 :(得分:1)

您必须使用localStorage进行持久性存储:

localStorage.setItem('user', user)

然后,如果要使用用户obj,可以这样做

myUser = localStorage.getItem('user')

答案 1 :(得分:0)

这样写:

return this.angularFireAuth.authState
  .pipe(
    filter(user => !!user),
    switchmap(user => this.afs.doc(`games/${gameId}/players/${user.uid}`));

可观察对象可以在任何时候设置,包括在构造函数中进行设置,但是直到有公认的用户时才会触发,这时它将为您提供该用户想要的文档。