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

如何在Cloud Functions中获取新注册用户的手机号?

如何在Firebase Cloud Functions的用户注册事件中获取手机号?

嘿,这个问题我前段时间刚踩过坑!其实核心是你找字段的位置不对,而且现在Firebase Functions的API也有小更新,给你梳理下具体解决方法:

首先,先把你的函数写法更新下——现在官方更推荐直接用user参数代替老的event对象,写法更简洁:

exports.userSignedUp = functions.auth.user().onCreate((user) => {
  // 在这里处理用户注册后的逻辑
});

接下来分两种情况获取手机号:

  • 如果用户是直接通过手机号注册(验证码/手机号密码):
    手机号会直接存在于user.phoneNumber字段里,但前提是你已经在Firebase控制台的「Authentication」→「登录方法」里启用了手机号登录。你可以直接这样取:

    const phoneNumber = user.phoneNumber;
    if (phoneNumber) {
      console.log('用户手机号:', phoneNumber);
      // 这里写你的业务逻辑,比如存到Firestore之类的
    }
    
  • 如果用户是通过第三方登录后关联了手机号:
    这时候手机号会藏在user.providerData数组里,你需要遍历这个数组找到类型为phone的登录提供商:

    // 从providerData中筛选出手机号登录的条目
    const phoneProvider = user.providerData.find(provider => provider.providerId === 'phone');
    if (phoneProvider) {
      const phoneNumber = phoneProvider.phoneNumber;
      console.log('用户手机号:', phoneNumber);
    }
    

额外小贴士:

  1. 调试的时候可以先把整个user对象打印出来,看看完整结构:
    console.log('用户完整信息:', JSON.stringify(user, null, 2));
    
    这样你就能清楚看到所有字段的位置,避免找错地方。
  2. 确保你的Cloud Functions服务账号有读取用户身份信息的权限——一般默认配置就没问题,但如果遇到权限错误,记得去Firebase控制台的「项目设置」→「服务账号」里检查下权限配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:11:57