Solución:
Resolví mi problema. Acabo de descargar serviceAccount.json archivo de Firebase Console y lo inserté en mi proyecto. El archivo ‘Cuenta de servicio’ contiene todo lo que necesito.
var firebase = require('firebase');
firebase.initializeApp({
databaseURL: 'https://*****.firebaseio.com',
credential: 'myapp-13ad200fc320.json', // This is the serviceAccount.json file
});
Entonces, el siguiente código funcionó muy bien.
firebase.database().ref("https://foroayuda.es/").set({
username: "test",
email: "[email protected]"
});
Esta sintaxis / biblioteca específica para cuentas de servicio en node
las aplicaciones están siendo obsoletas. El nuevo método para llegar a firebase en un servidor (es decir, no una aplicación de consumidor, como IoT o escritorio) es el firebase admin sdk
.
Su código de inicialización ahora debería ser:
var admin = require("firebase-admin");
var serviceAccount = require("path/to/serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
});
Aún puede ingresar manualmente sus credenciales, pero ahora están asignadas a una propiedad diff:
admin.initializeApp({
credential: admin.credential.cert({
projectId: "<PROJECT_ID>",
clientEmail: "[email protected]<PROJECT_ID>.iam.gserviceaccount.com",
privateKey: "-----BEGIN PRIVATE KEY-----n<KEY>n-----END PRIVATE KEY-----n"
}),
databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
});
Enfrentamos el mismo problema con AWS Beanstalk. La causa principal fue porque n
fue reemplazado por \n
en la variable de clave privada.
Después de agregar la expresión regular de reemplazo, se corrigió:
"private_key": process.env.FIREBASE_PRIVATE_KEY.replace(/\n/g, 'n')
Imprimir las variables en el registro también podría ayudar a aislar el problema.