如何从Firebase Phone Authentication获取用户手机号并存入Firestore?
获取Firebase手机号并存入UserModel的解决方案
方法1:直接从Firebase Auth当前用户读取
手机号验证成功后,Firebase Auth的当前用户对象会自动填充phoneNumber字段,直接调用即可:
修改你的storeData函数里的phone赋值:
phone: _firebaseAuth.currentUser?.phoneNumber ?? '',
用
?.和?? ''做空安全处理,避免极端情况(比如用户验证后意外登出)导致的空指针异常,正常流程下这个字段肯定存在。
方法2:跳转注册页时传递手机号(更稳妥)
如果不想依赖Auth的当前用户状态,你可以在验证成功跳转注册页时,把手机号作为参数传过去:
- 验证成功后跳转的代码:
Navigator.push( context, MaterialPageRoute( builder: (context) => RegistrationScreen(phoneNumber: credential.user!.phoneNumber!), ), );
- 注册页接收参数:
class RegistrationScreen extends StatelessWidget { final String phoneNumber; const RegistrationScreen({super.key, required this.phoneNumber}); // 页面其他逻辑 }
- 在
storeData里直接用这个参数:
phone: phoneNumber,
方法3:通过AuthProvider存储手机号
如果你的AuthProvider在处理手机号验证时已经拿到了手机号,可以把它存在Provider的变量里,方便后续调用:
- 在AuthProvider中添加存储逻辑:
String? _userPhoneNumber; String? get userPhoneNumber => _userPhoneNumber; // 在手机号验证成功的方法里赋值 void handlePhoneVerificationSuccess(PhoneAuthCredential credential) async { _userPhoneNumber = credential.user?.phoneNumber; // 其他验证后续操作 }
- 在
storeData里从Provider获取:
phone: ap.userPhoneNumber ?? '',
内容的提问来源于stack exchange,提问作者editix
相关产品推荐
相关产品推荐

