我使用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)
})
with
和withCancel
处理程序未执行,因为用户的令牌不再存在。 (非常奇怪的IMO,甚至withCancel
都没有执行)。
我必须在代码中捕获这种情况,强制注销,如帖子所述:
检查您是否可以阅读您的用户区域,如果没有任何内容,请强行注销。
答案 0 :(得分:0)
我最终向Firebase报告了错误报告。 我会发布回复,因为它可能在将来帮助某人。
来自Firebase的人回应了这个,
您所描述的行为是设计目的。用户 即使您已从中删除用户,会话也会无限期地持续存在 应用程序。为了帮助您解决这个问题,您可以查看 以下可能为您提供更多信息的StackOverflow帖子 如何处理这一个。
更多相关内容,我坚持使用取消阻止,为什么它没有执行:
我没有强调为什么没有调用withCancel
完成处理程序。
从这个:
ref.child("users/\(user.uid)").observe(.value, with: { (snapshot) in
print(snapshot)
..........
}, withCancel: { error in
print(error)
})
当我在两个打印件上放置断点时,应用程序不会停止。因此,即使withCancel
也未被调用。
答案:
转到
withCancel
完成处理程序查询,请允许我 在这里给你一些信息。如果是,则调用取消块 客户端未经身份验证,不再有权接收 事件。另外,还值得一提的是取消块 在离线模式下不会调用,因为Firebase可以正常工作 在这种情况下。您可以进一步查看我们的文档 的信息。