firebase admin nodejs 权限错误需要 iam.serviceAccounts.signBlob

Raf*_*ima 7 firebase firebase-authentication firebase-admin

我正在使用本教程:https : //firebase.google.com/docs/auth/admin/create-custom-tokens#using_a_service_account_id

创建一个 node.js 函数(部署到谷歌云函数)来验证我的用户。功能超级简单:

const admin = require('firebase-admin');
admin.initializeApp({
   serviceAccountId: 'authenticator@igibo-b0b27.iam.gserviceaccount.com'
});


exports.authenticate = (req, res) => {
   let pass;
   let uid;
   if (req.query) {
      if (req.query.v == 3) {
         pass = req.query.p;
         uid = req.query.u;
      }

         admin.auth().createCustomToken(uid)
            .then(function(customToken) {
               res.status(200).send(customToken);
               return customToken;
            })
            .catch(function(error) {
               console.error("Error creating custom token:" + JSON.stringify(error));
               res.status(400).send(error);
            });

   } else {
      console.error("EMPTY to authentication");
      res.end();
   }
};
Run Code Online (Sandbox Code Playgroud)

但我收到了这个烦人的错误:

{"code":"auth/insufficient-permission","message":"Permission iam.serviceAccounts.signBlob is required to perform this operation on service account projects/-/serviceAccounts/authenticator@igibo-b0b27.iam.gserviceaccount.com.; Please refer to https://firebase.google.com/docs/auth/admin/create-custom-tokens for more details on how to use and troubleshoot this feature."}
Run Code Online (Sandbox Code Playgroud)

在同一个教程中,它说我必须转到 IAM 并为我所做的服务帐户调整一些角色,但仍然收到此错误。

这是一个绝对简单的任务,不应该这么麻烦......我忘记了什么?id是对的!角色没错!代码是正确的!

怎么了?

Mar*_*nto 3

Firebase 在其文档中提到了此错误:

https://firebase.google.com/docs/auth/admin/create-custom-tokens#failed_to_define_service_account

您必须通过 JSON 配置文件正确初始化您的应用程序。

一个简单的修复方法是:

  1. 转到 https://console.cloud.google.com/iam-admin/iam?project=PROJECT_NAME
  2. 编辑您的默认服务帐户。
  3. 添加角色服务帐户令牌创建者

几分钟后,您的项目将能够创建签名令牌。