如何从云功能访问firebase自定义声明



编辑:我可以按以下方式进行,但我更喜欢更好的解决方案:

console.log((operatorUser.customClaims as any)['admin']);
console.log((operatorUser.customClaims as any).admin);

我正在尝试检查可调用云函数中的用户自定义声明。

以下是我的示例:https://firebase.google.com/docs/auth/admin/custom-claims#set_and_validate_custom_user_claims_via_the_admin_sdk

它在尝试访问自定义声明时出现以下错误:

"元素隐式具有"any"类型,因为类型为"admin"的表达式不能用于索引类型"Object"。类型"Object"上不存在属性"admin">

const operatorUser = await admin.auth().getUser(operatorUserDoc.id);
console.log(operatorUser.customClaims['admin']);

谢谢。这帮助我解决了另一个相关问题。

仅供参考,访问firebase中调用用户的声明的另一种方式";实时数据库";cloud函数直接来自上下文。auth:

const isAdmin = (context?.auth?.token as any)?.admin;
  • 但与customClaims的更新不同,token属性仍然需要强制转换。此外,请记住context.auth仅在Firebase实时数据库上设置,在Firestore数据库函数上未定义

最近对customClaims的类型签名进行了改进。如果您使用的是最新版本的SDK,那么您应该能够只执行user['key']来访问声明。

请参阅https://github.com/firebase/firebase-admin-node/issues/864了解更多上下文。

最新更新