node.js - 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.
任何帮助,将不胜感激。
谢谢
解决方案
要使用自定义令牌登录,必须使用正确的属性生成。具体来说:
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);
推荐阅读
- ios - 从嵌套的 NSDictionary 中读取值
- django - 如何将数据从一个视图传递到下一个视图
- java - Spring Data JPA 在空结果集上聚合函数
- python - Python Excel复制没有公式的数据
- android - YouTubePlayerFragment 隐藏旋转加载
- android - rxjava onBack 双击完成活动
- python - 使用 xterm 实例化一个新的 Python 解释器,但共享相同的 Python 堆栈
- java - 递归线性搜索算法
- c++ - Steam API AVGRATE
- typescript - 打字稿:抽象类的实例