registro obtener fcm node.js heroku firebase environment-variables firebase-authentication

node.js - fcm - obtener token firebase



ImplementaciĆ³n de la aplicaciĆ³n Firebase con cuenta de servicio en Heroku(variables de entorno con dotenv) (1)

Tengo una aplicación de nodo que utiliza una cuenta de servicio firebase. Me gustaría implementar la aplicación en Heroku, pero no quiero hacer públicas mis claves secretas. Estoy implementando directamente desde un repositorio github público, por lo que no quiero incluir el archivo de cuenta de servicio en la implementación.

Puedo tomar el archivo json de la cuenta de servicio, hacer de cada propiedad una variable de entorno, agregar cada una de esas variables a Heroku y desplegarla. Todo funciona bien (después de autorizar el nuevo dominio Heroku en mi aplicación firebase), ¿pero hay una mejor manera de hacerlo? Esto funciona, pero fue una molestia hacerlo (copiar y pegar cada variable y moverla). ¿Me estoy perdiendo una forma más fácil de hacer esto?

Aquí está el cambio que estoy haciendo. Desde esta línea donde se extraen las credenciales de un archivo:

admin.initializeApp({ credential: admin.credential.cert(''./path/firebase-service-account.json''), databaseURL: "https://my-firebase-app.firebaseio.com" });

A este objeto que trae todas las mismas cosas de las variables de entorno:

admin.initializeApp({ credential: admin.credential.cert({ "type": process.env.FIREBASE_TYPE, "project_id": process.env.FIREBASE_PROJECT_ID, "private_key_id": process.env.FIREBASE_PRIVATE_KEY_ID, "private_key": process.env.FIREBASE_PRIVATE_KEY, "client_email": process.env.FIREBASE_CLIENT_EMAIL, "client_id": process.env.FIREBASE_CLIENT_ID, "auth_uri": process.env.FIREBASE_AUTH_URI, "token_uri": process.env.FIREBASE_TOKEN_URI, "auth_provider_x509_cert_url": process.env.FIREBASE_AUTH_PROVIDER_X509_CERT_URL, "client_x509_cert_url": process.env.FIREBASE_CLIENT_X509_CERT_URL }), databaseURL: "https://my-firebase-app.firebaseio.com" });

¿Es esta la mejor práctica para implementar una aplicación firebase con una cuenta de servicio para Heroku? Estoy usando el módulo de nodo dotenv para lograr esto.


Hay dos campos obligatorios para el objeto de opciones de clientEmail : clientEmail y privateKey . Su ejemplo se puede recortar a:

admin.initializeApp({ credential: admin.credential.cert({ "private_key": process.env.FIREBASE_PRIVATE_KEY, "client_email": process.env.FIREBASE_CLIENT_EMAIL, }), databaseURL: "https://my-firebase-app.firebaseio.com" });

Además, algunos entornos pueden tener problemas con las nuevas líneas en el private_key env var; Encontré que key.replace(///n/g, ''/n'') es una solución sencilla.