SwiftUI 对接 Firebase 时如何实现自定义错误处理
Swift 中 Firebase Auth 登录自定义错误提示实现方法
Firebase Auth 返回的错误携带专属错误码,你可以通过匹配官方提供的AuthErrorCode枚举,为不同错误场景编写自定义提示文案,替换默认的localizedDescription即可。
修改后的完整实现代码
func signIn(withEmail email: String, password: String) { Auth.auth().signIn(withEmail: email, password: password) { (result, err) in if let err = err as NSError? { // 转换为Firebase Auth专属错误码 guard let errorCode = AuthErrorCode(rawValue: err.code) else { // 未匹配到已知错误码时的兜底提示 self.showError(message: "登录失败,请稍后重试") print("DEBUG: 未知登录错误: \(err.localizedDescription)") return } // 匹配错误类型返回自定义提示 let errorMessage: String switch errorCode { case .userNotFound: errorMessage = "该账号未注册,请先注册后登录" case .wrongPassword: errorMessage = "密码错误,请重新输入" case .invalidEmail: errorMessage = "邮箱格式不正确,请检查后输入" case .userDisabled: errorMessage = "该账号已被禁用,请联系客服处理" case .networkError: errorMessage = "网络异常,请检查网络连接后重试" case .tooManyRequests: errorMessage = "操作过于频繁,请稍后再试" default: errorMessage = "登录失败,请稍后重试" } // 调用项目自身的弹窗方法展示错误给用户 self.showError(message: errorMessage) print("DEBUG: 登录失败: \(err.localizedDescription)") return } self.userSession = result?.user self.fetchUser() } } // 示例:通用错误提示方法,可替换为项目内实际的弹窗/Toast逻辑 func showError(message: String) { print("用户端提示:\(message)") }
补充说明
- 你可以根据业务需求扩展
switch分支的匹配范围,所有Auth相关的错误枚举都可以在AuthErrorCode的定义中查询 - 开发阶段建议保留原始错误的打印方便排查问题,不要把原始错误信息暴露给普通用户
- 其他Firebase模块(如Firestore、Storage)的自定义错误提示也可以用相同逻辑实现:先将捕获到的错误转成对应模块的错误枚举,再匹配返回自定义文案
内容的提问来源于stack exchange,提问作者bruce_blake
相关产品推荐
相关产品推荐

