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

Firebase Cloud Functions 1.0如何获取当前用户信息?

在Firebase Cloud Functions 1.0中获取当前用户信息的方法

嘿,我刚好踩过这个版本升级的坑,原来那种非官方的event.auth.variable.uid确实在1.0里被移除了,不过新版的context参数已经提供了官方标准化的用户信息获取方式,不同类型的函数获取逻辑略有不同,我给你分场景说清楚:

1. 实时数据库/Cloud Firestore触发器函数

如果你的函数是由用户的数据库操作(比如写入、更新)触发的,且用户已通过Firebase认证,context.auth对象就会包含用户的核心认证信息:

exports.updateUserProfile = functions.firestore.document('users/{userId}').onUpdate((change, context) => {
  // 获取当前操作的用户UID
  const currentUserId = context.auth?.uid;
  
  if (!currentUserId) {
    // 处理用户未认证的情况,比如直接返回终止函数
    return null;
  }

  // 还能获取用户令牌里的附加信息,比如邮箱、自定义声明等
  const userEmail = context.auth?.token.email;
  const isAdmin = context.auth?.token.admin === true;

  // 你的业务逻辑...
});

这里用可选链操作符?.避免context.auth为null时的报错,也可以先通过if (context.auth)判断再取值。

2. HTTP函数

HTTP函数是公开可访问的,需要你手动从请求头里提取并验证用户的ID Token,才能安全获取用户信息:

const admin = require('firebase-admin');
admin.initializeApp();

exports.getPrivateData = functions.https.onRequest(async (req, res) => {
  // 从Authorization头里提取ID Token(格式为 Bearer <token>)
  const idToken = req.headers.authorization?.split('Bearer ')[1];
  
  if (!idToken) {
    return res.status(401).send('请先完成登录');
  }

  try {
    // 用Firebase Admin SDK验证并解析Token
    const decodedToken = await admin.auth().verifyIdToken(idToken);
    const userId = decodedToken.uid;
    const userEmail = decodedToken.email;

    // 后续返回用户专属数据...
    res.status(200).send(`欢迎回来,${userEmail}(UID:${userId})`);
  } catch (error) {
    res.status(401).send('无效的登录凭证');
  }
});

3. Auth触发器函数

如果是处理用户创建、删除等Auth相关的触发器,函数参数里直接就有user对象,包含完整的用户认证详情:

exports.welcomeNewUser = functions.auth.user().onCreate((user, context) => {
  const userId = user.uid;
  const userEmail = user.email;
  const displayName = user.displayName;

  // 比如给新用户发送欢迎邮件、初始化用户数据库条目...
});

总的来说,新版SDK把用户信息的获取方式标准化了,不再依赖非官方字段,按照函数类型用对应的方式就能轻松拿到用户信息啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:03:52