【发布时间】:2021-09-17 20:11:18
【问题描述】:
我最近为我的 firebase 应用启用了App Check,并在我的云功能和数据库上强制执行了它。云函数工作流运行正常。但是,我无法再从该函数访问数据库。我的可调用函数的最小版本如下所示:
exports.myFunc = functions.https.onCall(async (data, context) => {
const adminApp = admin.initializeApp();
const ref = adminApp.database().ref('some-node');
if (context.app === undefined) {
throw new functions.https.HttpsError(
'failed-precondition',
'The function must be called from an App Check verified app.',
);
}
try {
return (await ref.orderByKey().equalTo('foo').get()).exists()
} catch(exc) {
console.error(exc);
}
});
这曾经在 App Check 之前有效,但现在它失败了,我在日志中看到了这个:
@firebase/database:FIREBASE 警告:无效的 appcheck 令牌 (https://my-project-default-rtdb.firebaseio.com/) 错误:错误:客户端离线。
似乎我需要做一些额外的事情来让admin 应用程序将应用程序检查验证传递到数据库,但我还没有找到任何关于此的文档。我也尝试使用来自functions.app.admin 的应用实例而不是初始化一个新实例,但这没有帮助。
我有最新版本的软件包:
"firebase-admin": "^9.10.0"
"firebase-functions": "^3.14.1"
【问题讨论】:
-
firebaser here 乍一看,这有点出人意料,所以我要和工程团队核实一下,看看发生了什么。
标签: node.js firebase-realtime-database google-cloud-functions firebase-admin firebase-app-check