Activadores de Firebase Authentication

Cloud Functions se puede activar mediante eventos de Firebase Authentication. Estos eventos incluyen la creación y eliminación de usuarios. Por ejemplo, podrías enviar un correo electrónico de bienvenida a un usuario que acaba de crear una cuenta en la app.

Tipos de eventos

Firebase Authentication puede activar funciones en respuesta a los eventos del usuario create y delete.

Tipo de evento Activador
providers/firebase.auth/eventTypes/user.create Se activa cuando se crea una Cuenta de usuario.
providers/firebase.auth/eventTypes/user.delete Se activa cuando se borra una Cuenta de usuario.

Creación de usuarios

Las cuentas de Firebase activan los eventos de creación de usuarios para Cloud Functions en los siguientes casos:

  • Un usuario crea una cuenta de correo electrónico y una contraseña.

  • Un usuario accede por primera vez con un proveedor de identidad federada.

  • El desarrollador crea una cuenta con el SDK de Firebase Admin.

  • Un usuario accede a una sesión de autenticación anónima por primera vez.

Eliminación de usuarios

También puedes configurar una función para que se active en el momento de la eliminación de un usuario.

Estructura de eventos

Los datos de eventos se proporcionan como un userRecordobjeto.

A continuación, se muestra un ejemplo de un evento de creación de una cuenta basada en contraseña:

{
  "email": "me@example.com",
  "metadata": {
      "createdAt": "2018-10-19T19:29:16Z"
  },
  "uid": "XXXXX"
}

Algunas propiedades de este objeto solo se definen cuando se usan ciertos métodos de autenticación. Por ejemplo, los eventos de la cuenta basada en contraseña definen una propiedad email que contiene la dirección de correo electrónico del usuario. La propiedad uid (que contiene un ID de usuario único para el proyecto) siempre está definida.

Código de muestra

Node.js 8/10

/**
 * Triggered by creation or deletion of a Firebase Auth user object.
 *
 * @param {object} data The event payload.
 * @param {object} context The event metadata.
 */
exports.helloAuth = (data, context) => {
  try {
    console.log(
      `Function triggered by creation or deletion of user: ${data.uid}`
    );
    console.log(`Created at: ${data.metadata.createdAt}`);

    if (data.email) {
      console.log(`Email: ${data.email}`);
    }
  } catch (err) {
    console.error(err);
  }
};

Node.js 6 (obsoleto)

/**
 * Triggered by a change to a Firebase Auth user object.
 *
 * @param {!Object} event The Cloud Functions event.
 */
exports.helloAuth = event => {
  try {
    const data = event.data;
    console.log(`Function triggered by change to user: ${data.uid}`);
    console.log(`Created at: ${data.metadata.createdAt}`);

    if (event.data.email) {
      console.log(`Email: ${data.email}`);
    }
  } catch (err) {
    console.error(err);
  }
};

Python

import json
def hello_auth(data, context):
    """ Triggered by creation or deletion of a Firebase Auth user object.
     Args:
            data (dict): The event payload.
            context (google.cloud.functions.Context): Metadata for the event.
    """
    print('Function triggered by creation/deletion of user: %s' % data["uid"])
    print('Created at: %s' % data["metadata"]["createdAt"])

    if 'email' in data:
        print('Email: %s' % data["email"])

Go


// Package firebase contains a Firestore Cloud Function.
package firebase

import (
	"context"
	"log"
	"time"
)

// AuthEvent is the payload of a Firestore Auth event.
type AuthEvent struct {
	Email    string `json:"email"`
	Metadata struct {
		CreatedAt time.Time `json:"createdAt"`
	} `json:"metadata"`
	UID string `json:"uid"`
}

// HelloAuth is triggered by Firestore Auth events.
func HelloAuth(ctx context.Context, e AuthEvent) error {
	log.Printf("Function triggered by creation or deletion of user: %q", e.UID)
	log.Printf("Created at: %v", e.Metadata.CreatedAt)
	if e.Email != "" {
		log.Printf("Email: %q", e.Email)
	}
	return nil
}

Implementa la función

Para implementar tu función, es necesario que especifiques el tipo de evento y el proyecto para el cual configuraste Firebase Authentication. En GCP Console, hay un solo campo para Tipo de evento, ya que se supone que el proyecto es el mismo que el que contiene tu función.

En la línea de comandos, sin embargo, debes usar strings particulares para especificar estos dos parámetros. El siguiente comando gcloud implementa una función que activan los eventos del usuario create:

gcloud functions deploy YOUR_FUNCTION_NAME \
  --trigger-event providers/firebase.auth/eventTypes/user.create \
  --trigger-resource YOUR_PROJECT_ID \
  --runtime RUNTIME
Argumento Descripción
--trigger-event NAME El nombre del tipo de evento que activa la función. En este caso, debería ser un evento de creación o eliminación, como se detalló anteriormente.
--trigger-resource NAME El ID del proyecto (en este ejemplo, YOUR_PROJECT_ID) que contiene tu función y Firebase Authentication.
--runtime RUNTIME El nombre del entorno de ejecución que usas. Para obtener una lista completa, consulta la gcloudreferencia.
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Functions