如何在Swift中检测和处理Firebase权限被拒绝错误代码

3

当我从Firebase实时数据库观察数据时,遇到了以下错误。 我想做的是,如果错误是“Permission Denied”,那么我想执行不同的操作。 如何判断错误是否为“Permission Denied”?

错误信息:

Optional(Error Domain=com.firebase Code=1 "Permission Denied" UserInfo={NSLocalizedDescription=Permission Denied})

我的代码:

func observeData(completion: @escaping (Bool) -> Void){
    Database.database().reference().child("values").observe(.value, with: { (snap) in
        completion(true)
    }){ (error) in
        let errorCode = (error as NSError).code
        if errorCode == .?????? {  //-->> what to come here
            self.anotherFunc()  //--> if Permission Denied call this func
            completion(false)
        }else{
            completion(true)
        }
    }
}

1
你的代码实际上非常好。这里有一个小改动:你有一个调用 observe data 的函数,该函数包含在该调用之后的闭包中。在 - 那个 - 闭包中,你正在处理 true 或 false 的返回值。如果返回 false,则调用下一个要执行的函数。 - Jay
1个回答

0

这是我在Firebase应用程序中处理身份验证错误的方法。不确定它是否适用于您的情况,但您可能会发现它有用。

func firebaseErrorParser(error: Error) -> String? {
    if let errorCode = AuthErrorCode(rawValue: error._code) { // <- here!!

        switch errorCode { // switch case
        case .invalidVerificationCode:
            return "Wrong code or phone number!"
        default:
            return "An error occured... "
        }
    } else {
        return nil
    }
}

在我的 switch/case 中,我只有一个条目,因为我只想向用户提供有关输入错误的电话号码的具体反馈。似乎你可以通过 firestore 权限错误做类似的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接