You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:15:11