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

如何从Firebase Phone Authentication获取用户手机号并存入Firestore?

获取Firebase手机号并存入UserModel的解决方案

方法1:直接从Firebase Auth当前用户读取

手机号验证成功后,Firebase Auth的当前用户对象会自动填充phoneNumber字段,直接调用即可:

修改你的storeData函数里的phone赋值:

phone: _firebaseAuth.currentUser?.phoneNumber ?? '',

用?.和?? ''做空安全处理,避免极端情况(比如用户验证后意外登出)导致的空指针异常,正常流程下这个字段肯定存在。

方法2:跳转注册页时传递手机号(更稳妥)

如果不想依赖Auth的当前用户状态,你可以在验证成功跳转注册页时,把手机号作为参数传过去:

  1. 验证成功后跳转的代码:
Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => RegistrationScreen(phoneNumber: credential.user!.phoneNumber!),
  ),
);
  1. 注册页接收参数:
class RegistrationScreen extends StatelessWidget {
  final String phoneNumber;
  const RegistrationScreen({super.key, required this.phoneNumber});
  // 页面其他逻辑
}
  1. 在storeData里直接用这个参数:
phone: phoneNumber,

方法3:通过AuthProvider存储手机号

如果你的AuthProvider在处理手机号验证时已经拿到了手机号,可以把它存在Provider的变量里,方便后续调用:

  1. 在AuthProvider中添加存储逻辑:
String? _userPhoneNumber;
String? get userPhoneNumber => _userPhoneNumber;

// 在手机号验证成功的方法里赋值
void handlePhoneVerificationSuccess(PhoneAuthCredential credential) async {
  _userPhoneNumber = credential.user?.phoneNumber;
  // 其他验证后续操作
}
  1. 在storeData里从Provider获取:
phone: ap.userPhoneNumber ?? '',

内容的提问来源于stack exchange,提问作者editix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:05:32