Auth状态更改侦听器被触发两次?

当我的页面加载时,我需要知道用户是否已登录并基于此执行不同的任务。 我做的第一件事是检查它们是否已登录,但由于某种原因,要检查的if语句是否正在validation两次。 这是我的代码:

 override func viewDidAppear(_ animated: Bool) { FIRAuth.auth()?.addStateDidChangeListener { auth, user in if let user = user { print("User is logged in") } 

“用户已登录”在页面加载时打印两次而不是仅打印一次。 我做错了什么吗?

我遇到了同样的问题。 它不是用于登录的。 可以面对流动的选项https://firebase.google.com/docs/reference/android/com/google/firebase/auth/FirebaseAuth.AuthStateListener

  • 在听众注册之后
  • 用户登录时
  • 当前用户退出时
  • 当前用户更改时
  • 当前用户令牌发生变化时

所以只需要一个标志,然后检查一个。 或检查响应是否

试试这种方式:

 override func viewDidAppear(_ animated: Bool) { FIRAuth.auth()?.addStateDidChangeListener { auth, user in if let user = user { if user != nil { print("User is logged in") } } 

注意:尝试使用两个flag并检查user =! nil user =! nil