Firebase工具升级后,Firebase功能的身份验证失败

时间:2019-02-13 18:58:34

标签: node.js firebase firebase-realtime-database google-cloud-functions

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

我将firebase-tools更新为6.3.1之后,此错误才开始在我的应用程序中显示。几个月前效果很好。更糟的是...。似乎无法找到一个无限循环。

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

  1. 删除并重新部署功能
  2. 更改规则以允许所有读取/写入功能
  3. 更新了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;
             })
     }
 });
})


1 个答案:

答案 0 :(得分:0)

已解决:

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