es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La función de Firebase está escuchando en el proyecto A y escribiendo en el proyecto B.

Tengo dos proyectos de Firebase, A y B. Cuando un usuario sigue a otro usuario en el Proyecto A, se escribe data en /followers/{followedUid}/{followerUid}. Me gustaría realizar esta misma actualización en el Proyecto B.

Los usuarios del Proyecto A no pueden autorizar la escritura en el Proyecto B, por lo que necesito usar una función en la nube. Ya hago cosas así con funciones Node.js y firebase-admin mediante cuentas de servicio, pero aquí quiero usar una función implementada en Firebase.

¿Cómo puedo agregar o hacer referencia a una cuenta de servicio, o de otra forma autorizar un segundo proyecto en una función en la nube de Firebase?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para autorizar un segundo proyecto en una función en la nube de Firebase, pueden seguirse estos pasos:

    1. Crear una cuenta de servicio para el Proyecto B en la Consola de Google Cloud. Ir a IAM y administración > Cuentas de servicio y hacer clic en Crear cuenta de servicio. Ingresar un nombre para la cuenta de servicio y hacer clic en Crear.
    2. Generar una nueva clave JSON para la cuenta de servicio haciendo clic en los tres puntos debajo de Acciones > Crear clave. Seleccionar JSON y hacer clic en Crear.

    3. Descargar y guardar la clave JSON en su máquina local.

    4. En el código de su función en la nube de Firebase, utilizar el SDK de firebase-admin para inicializar una segunda instancia de la aplicación con las credenciales de la clave de la cuenta de servicio. Aquí hay un ejemplo de fragmento de código:

    const admin = require(‘firebase-admin’);
    const serviceAccount = require(‘./path/to/serviceAccountKey.json’);

    // Inicializar la aplicación del Proyecto A
    admin.initializeApp({
    credential: admin.credential.applicationDefault(),
    databaseURL: “https://project-a.firebaseio.com”
    });

    // Inicializar la aplicación del Proyecto B
    const projectB = admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: “https://project-b.firebaseio.com”
    }, ‘projectB’);

    // Utilizar la instancia projectB para actualizar datos en el Proyecto B
    projectB.database().ref(‘/followers/{followedUid}/{followerUid}’).set(data);

    En este ejemplo, primero se inicializa la instancia de la aplicación predeterminada para el Proyecto A. Luego se inicializa una segunda instancia de la aplicación para el Proyecto B utilizando la clave de la cuenta de servicio. Especificamos un nombre único para esta instancia de la aplicación (‘projectB’).

    Una vez que se inicializa la segunda instancia de la aplicación, podemos hacer referencia a su base de datos y escribir datos en ella utilizando el método ‘.database()’. En este caso, actualizamos datos en la ruta ‘/followers’ para el Proyecto B.

    Al utilizar una segunda instancia de la aplicación con una cuenta de servicio, podemos realizar acciones autorizadas en el Proyecto B desde una función en la nube de Firebase que se ejecuta en el Proyecto A.

Comments are closed.