如何从 Express 提供的 Firebase 功能中提取身份验证信息?

问题描述 投票:0回答:1

我正在使用本文档中的策略,通过 Firebase Functions 和 Express.js 提供微服务:https://firebase.google.com/docs/hosting/functions#use_a_web_framework

现在我想做的是从 Firebase Auth 访问某条数据。具体来说,是请求用户的自定义声明中的字段。但如果无法直接访问,我想获取用户的电子邮件、电话或 UID 将是一个好的开始。最好是不涉及手动将某些内容放入

req.query
req.body
req.params

的内容

有可靠的方法吗?

firebase express firebase-authentication google-cloud-run
1个回答
0
投票

在客户端:

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);
© www.soinside.com 2019 - 2024. All rights reserved.