【发布时间】: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 应用程序(它不是)来将配置输入到我的初始化中。还是什么都没有。
标签: node.js firebase firebase-realtime-database google-cloud-functions