Firebase电话验证报错[firebase_auth/invalid-verification-is]求解决方案
Firebase电话验证报错:invalid-verification-id 解决方法
已按照Firebase官方文档完成全部配置,在原生设备执行电话验证时触发错误,报错信息:
[firebase_auth/invalid-verification-is] The verification ID used to create the phone auth credential is invalid
发送验证码代码
await FirebaseAuth.instance.verifyPhoneNumber( phoneNumber: '+92$phone', timeout: const Duration(seconds: 60), verificationCompleted: (PhoneAuthCredential credential) {}, verificationFailed: (FirebaseAuthException e) {}, codeSent: (String verificationId, int? resendToken) { MyPhone.verify = verificationId; Navigator.pushNamed(context, 'otp'); }, codeAutoRetrievalTimeout: (String verificationId) {}, );
验证验证码代码
PhoneAuthCredential credential = PhoneAuthProvider.credential( verificationId: MyPhone.verify, smsCode: code); await FirebaseAuth.instance .signInWithCredential(credential);
针对性解决步骤
核对VerificationId一致性
在codeSent回调中打印生成的verificationId,再在OTP验证页面打印MyPhone.verify,确认两者完全匹配,没有被意外修改、覆盖或包含空格等无效字符。处理超时场景
当codeAutoRetrievalTimeout触发时,当前verificationId会失效。如果用户此时重新请求验证码,必须确保新生成的verificationId完全覆盖旧值,避免使用过期ID验证。校验手机号格式
确认+92$phone严格符合E.164标准,无多余空格、括号,手机号位数完整。错误的格式可能导致生成的verificationId本身无效。检查配置与设备环境
- 确认Android的
google-services.json、iOS的GoogleService-Info.plist配置正确,包名/bundle ID与Firebase控制台完全一致。 - 确保原生设备授予应用网络权限,网络不稳定可能导致verificationId未同步到Firebase服务器。
- 测试使用真实手机号,避免依赖模拟器(部分模拟器无法正常接收验证短信)。
- 确认Android的
捕获详细错误日志
在相关回调和验证逻辑中添加错误打印,定位具体问题:// 发送验证码时的错误捕获 verificationFailed: (FirebaseAuthException e) { print('验证发起失败: ${e.message}'); }, // 验证时的错误捕获 try { await FirebaseAuth.instance.signInWithCredential(credential); } on FirebaseAuthException catch (e) { print('验证码验证失败: ${e.message}'); }
内容的提问来源于stack exchange,提问作者SHUAIB AHMED
相关产品推荐
相关产品推荐

