我正在我的node. js服务器中使用fire base 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!");
})
我通过超文本传输协议接收idToken和注册令牌,生成自定义令牌后,我将通过FCM(Firebase云消息)将其发送回客户端,但我无法生成uid。
身份令牌的验证不起作用。我在localhost上这样做,并使用ngrok制作超文本传输协议请求的网址。这是我第一次使用Firebase admin-sdk,因此任何帮助都将不胜感激。
我收到这个错误=
我现在已经解决了…问题是异步….下一个函数在uid形成之前被调用。
抱歉打扰了。要解决这个问题,只需将下一个函数放在first中,以便首先形成uid。:)