首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Firebase身份验证中正确验证令牌

如何在Firebase身份验证中正确验证令牌
EN

Stack Overflow用户
提问于 2021-11-03 11:41:30
回答 1查看 1.4K关注 0票数 0

我有一个,它通过使用Firebase的电话OTP成功地登录了一个用户。登录后,将返回以下数据:

{"additionalUserInfo":{"isNewUser":false,“isNewUser”:null,"providerId":"phone","username":null},"user":{"displayName":null,"email":null,"emailVerified":false,"isAnonymous":false,"phoneNumber":"+123456644","photoURL":null,"providerData":数组,"providerId":“防火墙”,"refreshToken":refreshToken "tenantId":null,"uid":"Tx90EgWkSCf6M23KjsfH5Cf5vIv1"}}

从上面的数据可以看出,uid是Tx90EgWkSCf6M23KjsfH5Cf5vIv1

为了测试Firebase的verifyIdToken函数,然后使用上面的uid并将其传递给以下方法:

代码语言:javascript
复制
admin
    .auth()
    .verifyIdToken('Tx90EgWkSCf6M23KjsfH5Cf5vIv1')
    .then((decodedToken) => {
        console.log('decodedToken', decodedToken)
    })
    .catch((error) => {
        //Handle error
        console.log('error', error)
    })

然后,我得到以下错误:

代码语言:javascript
复制
errorInfo: {
    code: 'auth/argument-error',
    message: 'Decoding Firebase ID token failed. Make sure you passed the entire string JWT which represents an ID token. See https://firebase.google.com/docs/auth/admin/verify-id-tokens for details on how to retrieve an ID token.'
  },
  codePrefix: 'auth'
}

怎么解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-03 11:46:17

verifyIdToken()将用户的ID令牌作为参数,而不是UID。在DecodedIdToken对象中获取用户的UID。要在您的中获取用户的ID令牌,请尝试如下:

代码语言:javascript
复制
const token = await firebase.auth().currentUser.getIdToken();

然后将此令牌传递给后端并进行验证。您不能通过UID检查用户标识。始终验证ID令牌。

文档

如果您的Firebase客户端应用程序与自定义后端服务器通信,您可能需要识别该服务器上当前登录的用户。要安全地这样做,成功登录后,使用HTTPS将用户的ID令牌发送到服务器。然后,在服务器上,验证ID令牌的完整性和真实性,并从其中检索uid。您可以使用以这种方式传输的uid来安全地标识服务器上当前已登录的用户。

您可以阅读更多关于基于令牌的身份验证这里的信息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69824233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档