首页 > 解决方案 > Firebase LoginWithCustomToken 引发错误

问题描述

我在nodejs中使用jsonwebtoken创建firebase自定义令牌,一旦创建令牌并传递给firebase.auth().signInWithCustomToken(token)返回错误消息如下

自定义令牌格式不正确。请检查文档。

private_key:"-----开始私钥-----\n*****\n-----结束私钥-----\n"

将 private_key 存储在 fb-private-secret.key 文件中

注意- 以及我在 Firebase 中的 ServiceAccountKey.json 文件中获得的 \n 。

**Sample code:-**

const jwt = require("jsonwebtoken");
const fb_private_key = fs.readFileSync('./fb-private-secret.key').toString().replace(/\\n/gm, '\n');

in Nodejs express :-

const token = jwt.sign({
  "iss": "https://securetoken.google.com/****",
  "sub": user.uid,
  "aud": "banded-totality-****",
  "iat": new Date().getTime(),
  "exp": new Date().getTime()+(60*60*24*5)*1000,
  "uid":user.uid
},fb_private_key,{header:{kid:'#####' }, algorithm:'RS256' });

In Reactjs Front-End:-
//token which i get from the server.
const {user} = await firebase.auth().signInWithCustomToken(token);
At the above line (signInWithCustomToken) error comes says
the custom token format is incorrect. please check the documentation.

任何帮助,将不胜感激。

谢谢

标签: node.jsfirebase-authenticationjwtfirebase-admin

解决方案


要使用自定义令牌登录,必须使用正确的属性生成。具体来说:

alg: "RS256"
aud: "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit"

更新

管理 SDK 解决方案:

const  admin = require('firebase-admin');
const credentials = require('./credentials.json');

admin.initializeApp({
   credential: admin.credential.cert(credentials)
});

// example of claims
const additionalClaims = {
    premium: true
}

admin.auth().createCustomToken("user_id_goes_here", additionalClaims)
.then((customToken )=> {
    console.log(customToken);
})
.catch(console.error);

推荐阅读