如何验证由createCustomToken()创建的自定义Firebase身份验证令牌

时间:2019-02-11 12:44:50

标签: firebase firebase-authentication google-cloud-functions

我通过createCustomToken()创建了自定义身份验证令牌,请参见https://firebase.google.com/docs/auth/admin/create-custom-tokens

但是稍后,当我尝试通过verifyIdToken()函数验证此令牌时,会引发以下错误

Error: verifyIdToken() expects an ID token, but was given a custom token. See https://firebase.google.com/docs/auth/admin/verify-id-tokens for details on how to retrieve an ID token.

这是合理的,因为没有这样的ID ...但是我需要的-只是简单地验证令牌,类似于jwt.verify()...

有人遇到过这个问题,找到了什么解决方案?是否可以通过jsonwebtoken库验证Firebase身份验证令牌?

P.S。我要在Google Cloud Function端点中使用验证

解决方案:看来我刚刚找到了一个解决方案https://firebase.google.com/docs/auth/admin/verify-id-tokens#verify_id_tokens_using_a_third-party_jwt_library,只需要从https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com抓取公钥并使用jsonwebtoken库进行验证...

1 个答案:

答案 0 :(得分:1)

verifyIdToken之类的名称是用于验证IdToken,而不是自定义令牌。

CustomToken用于sign in的客户端。可以使用简单的JWT验证(如您的解决方案)来验证此自定义令牌(它会在一小时后失效)。

但是IdToken是另一回事,您需要使用firebase auth进行登录过程。

要在登录后从客户端获取Id Token ,这取决于客户端是Android,Web还是IOS。 可以在this section

中读取获取IdToken的代码。