Firebase Admin .Net无效邮箱异常处理方案咨询
解决Firebase Admin SDK for .Net邮箱格式异常捕获问题
问题根源
Firebase Admin SDK for .Net中,用户操作抛出的异常类型是FirebaseException(而非FirebaseAuthException),需要通过异常对象的ErrorCode属性判断具体错误类型。邮箱格式无效对应的错误码为invalid-email。
修改后的代码
public async Task<string> RegisterAsync(RegisterData registerData) { try { var userArgs = new UserRecordArgs() { Email = registerData.Email, Password = registerData.Password, DisplayName = registerData.Name, EmailVerified = true, }; UserRecord userRecord = await FirebaseAuth.DefaultInstance.CreateUserAsync(userArgs); Users newuser = new Users() { Email = userRecord.Email, Uid = userRecord.Uid, Name = userRecord.DisplayName, LastSignInDate = userRecord.UserMetaData.LastSignInTimestamp, CreationDate = userRecord.UserMetaData.CreationTimestamp // 修正:原代码拼写错误且获取时间字段错误 }; _IUserRepository.RegisterEF(newuser); return userRecord.Uid; } catch (FirebaseException ex) { // 捕获Firebase专属异常,匹配错误类型 if (ex.ErrorCode == "invalid-email") { // 执行邮箱格式无效的特定操作,比如返回自定义提示 return "邮箱格式无效,请输入正确的邮箱地址"; } // 其他Firebase错误返回默认提示 return ex.Message; } catch (Exception ex) { // 处理非Firebase的通用异常 return ex.Message; } }
关键说明
- 优先捕获
FirebaseException,通过ErrorCode匹配具体场景:invalid-email:邮箱格式无效email-already-exists:邮箱已被注册weak-password:密码强度不足(若启用验证)
- 修正原代码两处问题:
- 方法名拼写错误:
RegiserAsynh改为RegisterAsync - 用户创建时间字段错误:
LastRefreshTimestamp替换为CreationTimestamp(正确获取用户创建时间)
- 方法名拼写错误:
内容的提问来源于stack exchange,提问作者казённый унитаз
相关产品推荐
相关产品推荐

