Recientemente habilité App Check para mi aplicación Firebase y la apliqué tanto en mis funciones de nube como en mi base de datos. El flujo de trabajo de la función de nube se está comportando correctamente. Sin embargo, ya no puedo acceder a la base de datos desde la función. Una versión mínima de mi función invocable se parece a esto:
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); } });Esto solía funcionar antes de App Check, pero ahora falla y veo esto en los registros:
@firebase/database: ADVERTENCIA DE FIREBASE: Token de verificación de aplicación no válido ( https://my-project-default-rtdb.firebaseio.com/ ) Error: Error: el cliente está desconectado.
Parece que necesito hacer algo adicional para que la aplicación de admin pase la verificación de verificación de la aplicación a la base de datos, pero aún no he podido encontrar ninguna documentación al respecto. También intenté usar la instancia de la aplicación de functions.app.admin en lugar de inicializar una nueva, pero esto no ayudó.
Tengo la última versión de los paquetes:
"firebase-admin": "^9.10.0" "firebase-functions": "^3.14.1"base de fuego aquí
El comportamiento que está viendo no es como se supone que debe funcionar, y hemos podido reproducirlo. Gracias por el informe claro, y lamento que te hayas encontrado con esto.
Si (re)instala el SDK de administración de Firebase hoy, no experimentará el mismo problema, ya que solucionamos el problema en la @firebase/database (en este PR ).
Si (todavía) experimenta el problema, puede verificar si tiene la dependencia correcta @firebase/database ejecutando:
npm ls @firebase/databaselos resultados se parecen a esto:
temp-admin@1.0.0 /Users/you/repos/temp-admin └─┬ firebase-admin@9.11.0 └── @firebase/database@0.10.8 Si su versión de @firebase/database es anterior a 0.10.8 , deberá reinstalar el SDK de administrador, por ejemplo, eliminando su directorio node_modules y su archivo package-lock.json y ejecutando npm install nuevamente. Esto también puede actualizar otras dependencias.