我正在使用本文档中的策略,通过 Firebase Functions 和 Express.js 提供微服务:https://firebase.google.com/docs/hosting/functions#use_a_web_framework
现在我想做的是从 Firebase Auth 访问某条数据。具体来说,是请求用户的自定义声明中的字段。但如果无法直接访问,我想获取用户的电子邮件、电话或 UID 将是一个好的开始。最好是不涉及手动将某些内容放入
req.query
、req.body
或 req.params
的内容
有可靠的方法吗?
在客户端:
1.- 下面假设客户端请求已通过身份验证。检查客户端的
Authorization
标头,您将看到一个 Bearer
令牌。
在服务器端:
2.- 从
Authorization
标头获取令牌。如果使用特快Request
,它会是这样的:
const bearerToken = req.headers['authorization']?.split(' ')?.[1];
3.- 使用 Firebase Admin SDK 验证令牌:
const decodedToken = await getAuth().verifyIdToken(bearerToken);
const uid = decodedToken.uid;
4.- 使用
uid
属性查找具有自定义声明的用户记录:
const userRecord = await getAuth().getUser(uid);
console.log(userRecord.customClaims);