这是我的函数,对于firebase函数:
export const hello = onRequest({ cors }, async (request, response) => {
const token = request.headers.authorization?.split('Bearer ')[1]
if (token) {
const tokenData = await getAuth().verifyIdToken(token, true)
response.send({
status: 'success',
data: tokenData.email
})
} else {
response.status(401).send('Unauthorized')
}
})
我不喜欢我在这里得到代币的方式,但这是我找到的唯一方法:request.headers.authorization?.split('Bearer ')[1]
有没有更好的方法?比方说,也许admin本身有一些内置的方法?
1条答案
按热度按时间axr492tv1#
verifyIdToken()
只需要JWT标记作为第一个参数。'Bearer '
只是指示请求使用Bearer标记系统。如果您只是在API请求中添加标记,则不必解析字符串以获取标记部分。Admin SDK没有任何内置函数。
或者,可以使用
onCall()
代替onRequest()
来处理身份验证部分,并且可以从context.auth
对象读取用户信息。