【问题标题】:Observer's completion handler not called, how to check in code未调用观察者的完成处理程序,如何签入代码
【发布时间】:2017-08-14 06:14:37
【问题描述】:

我使用 Firebase 和 Swift 对 Instagram 进行自定义身份验证。

我现在有这个问题,Remove a user through dashboard, but the user is still logged in?

当我启动应用程序时,我有这个监听器:

Auth.auth().addStateDidChangeListener {

我在其中设置了一个观察者:

ref.child("users/\(user.uid)").observe(.value, with: { (snapshot) in
        print(snapshot)
        ..........
    }, withCancel: { error in
        print(error)
    })

withwithCancel 处理程序不会执行,因为用户的令牌不再存在。 (非常奇怪的 IMO,甚至 withCancel 也不会执行)。

我必须在代码中捕捉到这种情况,才能强制注销,如帖子所述:

检查您是否可以读取到您的用户区,如果那里没有任何内容,请强制注销。

【问题讨论】:

    标签: swift authentication firebase


    【解决方案1】:

    我最终向 Firebase 报告了错误报告。 我会发布回复,因为它可能会在未来帮助某人。

    Firebase 的人对此做出了回应,

    您所描述的行为是设计使然。一个用户的 即使您已将用户从 应用程序。为了帮助您解决这种情况,您可以查看 关注 StackOverflow 帖子,这些帖子可能会为您提供更多信息 如何处理这个。

    更多关于这个,我坚持使用取消块,为什么它没有执行:

    我不明白为什么不调用 withCancel 完成处理程序。 由此:

     ref.child("users/\(user.uid)").observe(.value, with: { (snapshot) in 
         print(snapshot) 
         .......... 
         }, withCancel: { error in 
            print(error)  
         }) 
    

    当我在两个打印件上都设置断点时,应用程序不会停止。所以,即使withCancel 也不会被调用。

    答案:

    转到您的 withCancel 完成处理程序查询,让我来 在这里给你一些信息。取消块被调用,如果 客户端未经身份验证,不再有权接收 事件。此外,还值得一提的是取消块 在离线模式下不会被调用,因为 Firebase 旨在工作 在这种情况下很好。您可以查看我们的文件以进一步了解 详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      相关资源
      最近更新 更多