Firebase-tools 升级后 Firebase-functions 身份验证失败

Posted

技术标签:

【中文标题】Firebase-tools 升级后 Firebase-functions 身份验证失败【英文标题】:Firebase-functions auth failure after Firebase-tools upgrade 【发布时间】:2019-02-13 18:58:34 【问题描述】:

错误:@firebase/database:FIREBASE 警告:为名为“[DEFAULT]”的应用提供的身份验证凭据无效。这通常表明您的应用程序未正确初始化。确保提供给 initializeApp() 的“credential”属性被授权访问指定的“databaseURL”并且来自正确的项目。

在我将 firebase-tools 更新到 6.3.1 后,我的应用程序才开始出现此错误。几个月前工作得很好。更糟糕的是......通话中似乎有一个无限循环,我无法找到。

根据 Firebase 文档和视频,我已正确初始化脚本。

    删除并重新部署函数 更改规则以允许所有读/写功能 更新了 Google 开发控制台中的 IAM 权限(尽管这对我来说似乎很陌生,因为我天生就是 ios 开发人员)
 const admin = require('firebase-admin');
 const stripe = require("stripe")("sk_***********");

 stripe.setApiVersion('2018-09-24');

 admin.initializeApp();

 exports.chargeCustomer = functions.https.onRequest((req, res) => 

 const _amount = req.query.amount;
 const _id = req.query.customerId;
 const _uid = req.query.uid;

 console.log('Charge customer started');

 stripe.charges.create(
     amount: _amount,
     customer: _id,
     currency: "usd"
 , (err, charge) => 
     if (err !== null) 
         console.log("Error charging customer: ", err);
         res.status(500).send(err);
         return;
      else 
         console.log('Stripe returned. Starting Firebase');

-below is where things go haywire-

         admin.database().ref(`/users/$_uid/balance`)
             .once("value", (snap) =>  

                 admin.database().ref(`/users/$_uid    /`).update("some:data", (err) => 
                     if (err !== null) 

                         res.status(301).send(err.message);
                         return;
                      else 
                         res.status(200).send(true);
                         return;
                     
                 )
               
             ).catch((err) => 
                 console.log("error getting balance: " + err);
                 res.status(301).send(err);
                 return;
             )
     
 );
)


【问题讨论】:

你更新了所有相关的库吗? github.com/firebase/firebase-functions/issues/… npm install -g firebase-tools@latest npm install --save firebase-functions@latest npm install --save firebase-admin@latest 我已经应用了提到的 npm 工具。还添加了一个 Firebase Web 应用程序(它不是)来将配置输入到我的初始化中。还是什么都没有。 【参考方案1】:

已解决:

    在您的项目中,转到项目设置 > 服务帐户 > FirebaseAdminSdk。复制代码进行初始化。 生成一个新密钥以下载并放置在您的项目文件夹中。 更新 var serviceAccount = require("path/to/serviceAccountKey.json") 部署

【讨论】:

以上是关于Firebase-tools 升级后 Firebase-functions 身份验证失败的主要内容,如果未能解决你的问题,请参考以下文章

尽管安装并需要,但找不到模块“firebase-tools”的声明文件

Firebase 在 M1 Mac 上损坏

如何通过firebase-tools库创建新的firebase站点

无法进行 Firebase 部署 - 错误:指定的 Firebase 无效

Stripe 和 Firebase:FirebaseError:collection() 的第一个参数应为 CollectionReference、DocumentReference 或 Fireba

Uncaught FirebaseError: Firebase: No Firebase App '[DEFAULT]' has been created - 在 vue.js 中调用 Fireba