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

Firebase V2云函数中UserRecord对应的类型接口是什么?

问题解答

核心结论

functionsHttps.CallableRequest['auth'] 不等价于 V1中的UserRecord。

两者的区别

  • V1的UserRecord是Firebase Auth存储的完整用户全量记录,包含邮箱、创建时间、自定义声明等所有用户相关字段。
  • CallableRequest['auth']是Callable函数请求上下文里的认证元数据,类型为CallableAuth,仅携带uid、token(含自定义声明)等请求时的认证信息,并非完整的用户记录。

V2中获取UserRecord类型的方法

Firebase Functions V2不再从firebase-functions包导出UserRecord,需直接从Firebase Admin SDK导入:

import { UserRecord } from 'firebase-admin/auth';

如果业务需要完整用户记录,不能直接使用request.auth,需通过Admin SDK主动查询:

import * as functionsHttps from 'firebase-functions/v2/https';
import * as admin from 'firebase-admin';
admin.initializeApp();

// 推荐直接使用CallableRequest类型,无需自定义Request接口
export const createUserV2 = functionsHttps.onCall(async (request: functionsHttps.CallableRequest<CreateUserData>) => {
  const uid = request.auth?.uid;
  
  if (!uid) {
    throw new functionsHttps.HttpsError('unauthenticated', '用户未认证');
  }

  // 获取完整的UserRecord
  const userRecord: UserRecord = await admin.auth().getUser(uid);
  const customClaims = userRecord.customClaims;
  
  const { userType, privacySettings } = request.data;
  
  // 后续业务逻辑
})

自定义Request接口的修正(若需保留)

如果坚持使用自定义Request接口,应将auth的类型指定为正确的CallableAuth:

import * as functionsHttps from 'firebase-functions/v2/https';

interface Request {
  data: CreateUserData;
  auth?: functionsHttps.CallableAuth; // 替换any为标准类型
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:29:54