我在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的验证无效。我在我的localhost上执行此操作并使用ngrok使URL发出http请求。 这是我第一次使用firebase admin-sdk,所以任何帮助都会受到赞赏。
我收到此错误=>收到令牌时出错。
答案 0 :(得分:0)
我现在已经解决了.. 问题在于异步...... 在uid形成之前调用了下一个函数。
对不起,不好意思。 要解决这个问题,只需将下一个函数放在第一个函数中,以便首先形成uid。 :)