【发布时间】:2018-06-24 06:00:54
【问题描述】:
我在我的 node.js 服务器中使用 firebase admin-sdk 来生成自定义令牌。 以下是它的代码。
var admin = require("firebase-admin"),
express = require("express"),
app = express(),
bodyParser= require("body-parser"),
serviceAccount = require("./skill-india-3e512-firebase-adminsdk-m4kyy-40528dd641.json"),
rot = require("rot");
app.use(bodyParser.urlencoded({extended: true,}));
app.use(express.static("public"));
console.log(serviceAccount);
console.log(admin);
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://skill-india-3e512.firebaseio.com/"
});
app.get("/", function(req,res){
console.log("Skill India Backend");
})
app.get("/id-tokens/:idToken/:registrationToken", function(req,res){
// Receiving id-tokens
var idToken = rot(req.params.idToken, -13);
var registrationToken = rot(req.params.registrationToken, -13);
console.log("idToken: " + idToken);
console.log("registrationToken: " + registrationToken);
admin.auth().verifyIdToken(idToken).then(function(decodedToken) {
var uid = decodedToken.uid;
console.log(uid);
admin.auth().createCustomToken(uid)
.then(function(customToken) {
var payload = {
$sceDelegate data: {
MyKey1: customToken
}
};
var options = {
priority: "high",
tmeToLive: 60 * 60 * 24
};
console.log("customToken: ", customToken);
admin.messaging(),sendToDevice(registrationToken, payload, options)
.then(function(response){
console.log("Successfully Sent");
})
.catch(function(error){
console.log("Error Encountered: " , error);
});
}).catch(function(error) {
console.log("Error creating custom token:", error);
});
})
.catch(function(error) {
console.log("Error receiving tokens");
});
});
app.listen(3000, function(){
console.log("Server Started!");
})
我通过 http 接收 idToken 和 registrationToken,生成自定义令牌后,我将通过 FCM(Firebase 云消息传递)将其发送回客户端,但我一直在生成 uid。
id-tokens 的验证不起作用。我在我的本地主机上执行此操作,并使用 ngrok 制作 url 来发出 http 请求。 这是我第一次使用 firebase admin-sdk,因此我们将不胜感激。
我收到此错误 => 接收令牌时出错。
【问题讨论】:
-
收到idToken后,能否手动验证idToken是否有效?您可以使用jwt.io手动验证idToken。
-
很抱歉,错误已解决...问题出在异步上。下一个函数在没有 uid 的情况下被调用....我现在已经解决了
标签: node.js firebase firebase-cloud-messaging firebase-admin