我目前正在使用 firebase 3.0 开发一个 node.js 服务,该服务由使用 firebase 2.4 的 Web 应用程序调用。
我正在发送当前用户Firebase ID 令牌 (Auth.$getAuth().token
)在我的标头调用中并尝试使用以下命令验证令牌
var idToken = req.headers["x-access-token"];
auth.verifyIdToken(idToken).then(function(decodedToken) {
var uid = decodedToken.sub;
console.log(decodedToken);
}, function(error){
console.log(error);
});
但我得到:
[Error: Firebase Auth ID token has no "kid" claim]
获取身份验证():
![enter image description here](https://i.stack.imgur.com/lQdDQ.png)
UPDATE
我刚刚测试了在服务器端生成和验证令牌,我遇到了同样的问题。
var auth = firebase.auth();
var token = auth.createCustomToken(userId, {"premium_account": true});
console.log(token);
auth.verifyIdToken(token).then(function(decodedToken) {
console.log(decodedToken);
}, function(error){
console.log(error);
});
有什么建议么?
更新2:[解决方案]
我的问题是,使用 AngularFire 2.X.X 生成的令牌与我的服务器中运行的 Firebase 3.X.X 不兼容。因此,在深入研究了人们在这里和中写下的一些想法之后这个谷歌小组主题解决方法是使用jsonwebtoken如下:
var jwt = require('jsonwebtoken');
jwt.verify(idToken, fbKey, function(err, decoded) {
if (!err){ console.log(decoded); }
});
您可以找到fbKey
访问新的 firebase 控制台并进入设置 -> 项目设置 -> 数据库.