如何在执行firebase应用检查后从nodejs admin sdk访问firebase数据库 &



我在我的项目中启用了Firebase应用程序检查,以确保所有请求仅来自我们的应用程序。这一直工作得很好,直到现在(使用RecaptachaV3作为web的认证提供商)。然而,我想从我的后端nodejs服务器访问数据库(rtdb)。我使用firebase-admin-sdk和它的服务帐户。但是我做不到。

const { initializeApp, applicationDefault } = require('firebase-admin/app');
const { getDatabase } = require('firebase-admin/database');
const app = initializeApp({
credential: applicationDefault(),
databaseURL: '********',
});
const db = getDatabase(app);
const ref = db.ref('/some-path');
ref.once('value', (snapshot) => {
console.log(snapshot.val());
});

下面抛出错误

[2022-06-27T09:42:25.299Z] @firebase/database: FIREBASE WARNING: Missing appcheck token (https://qtalkproject.firebaseio.com/)

应用程序检查不是只为客户端?firebase不应该允许来自服务帐户的所有请求吗?为什么它要求一个应用程序检查令牌?根据文档,firebase-admin-sdk允许创建应用程序检查令牌。如果允许创建应用程序检查令牌,这是否意味着它已经通过了身份验证?为什么我不能从相同的管理sdk访问数据库?我遗漏了什么吗?

如果有人像我一样被阻止,直到firebase发布修复,您可以使用旧版本的firebase管理sdk,它没有应用程序检查(我使用v9.3.0)来访问rtdb和其他firebase功能

firebase here

你是正确的,Firebase管理SDK应该绕过应用程序检查。谢谢你发现并报告这个bug!我们的团队已经确定了这个问题,目前正在努力修复。我们将使用以下GitHub问题来跟踪进度https://github.com/firebase/firebase-admin-node/issues/1788