【发布时间】:2017-12-06 22:39:00
【问题描述】:
我在使用 Firebase 的 iOS 应用时遇到问题。我正在使用以下代码退出:
@IBAction func logoutDidTap(_ sender: Any) {
try! FIRAuth.auth()?.signOut()
虽然应用程序 UI 反映了一个 signOut,但我收到以下控制台消息: [Firebase/Database][I-RDB03812] /media 的侦听器失败:permission_denied 此外,当我使用不同的用户凭据登录时,该应用程序将以旧用户身份登录。
override func viewDidAppear(_ animated: Bool) {
//user logged in?
FIRAuth.auth()?.addStateDidChangeListener({ (auth, user) in
if let user = user { //signed in
DatabaseReference.users(uid: user.uid).reference().observeSingleEvent(of: .value, with: { (snapshot) in
if let userDict = snapshot.value as? [String: Any] {
self.currentUser = User(dictionary: userDict)
}
})
}else {
self.performSegue(withIdentifier: Storyboard.showWelcome, sender: nil)
}
})
有什么想法吗?
【问题讨论】:
-
很可能存在这样一种情况,即注销被推入堆栈并在其他侦听器之前弹出;因此应用程序在退出后尝试读取 Firebase 节点;因此许可被拒绝。这可能是您有一个顶级观察者并且其他事件正在该闭包内发生的情况,包括注销功能。
-
您需要返回旧问题并将答案标记为正确或提供反馈。只提出问题而不向给你答案的人提供反馈是不好的形式。
标签: ios swift firebase firebase-authentication