【问题标题】:Custom token generation error in firebase admin sdk in node.js server and android clientnode.js 服务器和 android 客户端中的 firebase admin sdk 中的自定义令牌生成错误
【发布时间】: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


【解决方案1】:

我已经解决了。。 问题在于异步...... 在形成 uid 之前调用下一个函数。

很抱歉给您带来麻烦。 要解决这个问题,只需将下一个函数放在第一个函数中,以便首先形成 uid。 :)

【讨论】:

    猜你喜欢
    • 2017-04-25
    • 2018-06-16
    • 2023-03-20
    • 2020-07-19
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2019-03-25
    相关资源
    最近更新 更多