【问题标题】:Auth state change listener being fired twice?身份验证状态更改侦听器被触发两次?
【发布时间】:2017-03-30 04:22:41
【问题描述】:

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

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

当页面加载时,“用户已登录”会打印到控制台两次,而不是一次。我做错了什么吗?

【问题讨论】:

  • 其中一个可能是它刷新令牌时。
  • 好的,我应该在第一次验证后设置一个标志变量,这样我就不会两次执行所有功能吗?

标签: ios swift firebase firebase-authentication


【解决方案1】:

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

  • 在监听器注册之后
  • 当用户登录时
  • 当前用户退出时
  • 当当前用户发生变化时
  • 当前用户的令牌发生变化时

所以只需创建一个标志然后检查那个。或检查回复nil 与否

试试这个方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-26
    • 2012-09-15
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2021-04-26
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多