许多函数在执行第一行代码之前就开始间歇性失败,并出现以下错误:
FIREBASE警告:{"代码":"应用程序/无效凭据","消息":通过"凭据"属性提供给initializeApp((的凭据实现无法获取有效的Google OAuth2访问令牌,错误如下:"无法解析访问令牌响应:SyntaxError:JSON中位置4处的意外令牌p"。}
我在Firebase支持下发现一个bug问题已经五天多了,但我仍然没有任何反馈。
有人知道为什么会发生这种情况以及如何解决吗?
使用的库及其版本:
"firebase": "^8.2.9",
"firebase-admin": "^9.5.0",
"firebase-functions": "^3.1.0"
初始化:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
var config = {
apiKey: "...",
authDomain: "...",
databaseURL: "..."
};
var firebase = require("firebase");
firebase.initializeApp(config);
在云功能中,如果您想与Firebase服务(例如Firestore、Auth服务等(进行交互,则需要使用Admin SDK。
因此,您需要加载firebase-functions
和firebase-admin
模块,并初始化与服务交互的admin
应用程序实例,如下所示:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const firestoreDB = admin.firestore();
const authService = admin.auth();
// ...
// Examples:
// In a Cloud Function
return firestoreDB.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
});
// In another Cloud Function
return authService.updateUser(uid, {
email: 'modifiedUser@example.com',
phoneNumber: '+11234567890',
})
.then((userRecord) => {
// ...
// return ...
})
换句话说,你不需要做:
var config = {
apiKey: "...",
authDomain: "...",
databaseURL: "..."
};
var firebase = require("firebase");
firebase.initializeApp(config);
还要注意文档中的注释:
在许多情况下,只有最新版本的Firebase CLI和
firebase-functions
SDK。经常更新Firebase CLI和Firebase项目:的函数文件夹中的带有这些命令的SDK
npm install firebase-functions@latest firebase-admin@latest --save
npm install -g firebase-tools