Activadores de Firebase Authentication
Las funciones de Cloud Run se pueden activar mediante eventos de Firebase Authentication en el mismo proyecto que la función.Google Cloud Estos eventos incluyen la creación y la eliminación de usuarios. Por ejemplo, puedes enviar un correo de bienvenida a un usuario que acaba de crear una cuenta en tu aplicación.
Tipos de eventos
Firebase Authentication puede activar funciones en respuesta a eventos de create
y delete
de los usuarios.
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 elimina una cuenta de usuario. |
Creación de un usuario
Las cuentas de Firebase activan eventos de creación de usuarios para las funciones de Cloud Run cuando:
Un usuario crea una cuenta de correo y una contraseña.
Un usuario inicia sesión por primera vez con un proveedor de identidades federadas.
El desarrollador crea una cuenta con el SDK de administrador de Firebase.
Un usuario inicia sesión por primera vez en una nueva sesión de autenticación anónima.
Eliminación de usuario
También puedes configurar una función para que se active cuando se elimine un usuario.
Estructura de eventos
Los datos de eventos se proporcionan como un objeto UserRecord
.
A continuación, se muestra un ejemplo de 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 utilizan determinados métodos de autenticación. Por ejemplo, los eventos de cuenta basada en contraseña
definen una propiedad email
que contiene la dirección de correo del usuario. La propiedad uid
(que contiene un ID de usuario único de tu proyecto) siempre está definida.
Código de muestra
Node.js
Python
Go
Java
C#
using CloudNative.CloudEvents; using Google.Cloud.Functions.Framework; using Google.Events.Protobuf.Firebase.Auth.V1; using Microsoft.Extensions.Logging; using System.Threading; using System.Threading.Tasks; namespace FirebaseAuth; public class Function : ICloudEventFunction<AuthEventData> { private readonly ILogger _logger; public Function(ILogger<Function> logger) => _logger = logger; public Task HandleAsync(CloudEvent cloudEvent, AuthEventData data, CancellationToken cancellationToken) { _logger.LogInformation("Function triggered by change to user: {uid}", data.Uid); if (data.Metadata is UserMetadata metadata) { _logger.LogInformation("User created at: {created:s}", metadata.CreateTime.ToDateTimeOffset()); } if (!string.IsNullOrEmpty(data.Email)) { _logger.LogInformation("Email: {email}", data.Email); } // In this example, we don't need to perform any asynchronous operations, so the // method doesn't need to be declared async. return Task.CompletedTask; } }
Ruby
PHP
use Google\CloudFunctions\CloudEvent; function firebaseAuth(CloudEvent $cloudevent) { $log = fopen(getenv('LOGGER_OUTPUT') ?: 'php://stderr', 'wb'); $data = $cloudevent->getData(); fwrite( $log, 'Function triggered by change to user: ' . $data['uid'] . PHP_EOL ); fwrite($log, 'Created at: ' . $data['metadata']['createTime'] . PHP_EOL); if (isset($data['email'])) { fwrite($log, 'Email: ' . $data['email'] . PHP_EOL); } }
Desplegar una función
Para desplegar tu función, debes especificar el tipo de evento y el proyecto en el que hayas configurado Firebase Auth. En la Google Cloud consola, hay un solo campo para Tipo de evento, ya que se da por hecho que el proyecto es el mismo que el que contiene tu función.
Sin embargo, en la línea de comandos, debes usar cadenas específicas para especificar estos dos parámetros. El siguiente comando gcloud
despliega una función que se activa mediante eventos create
de usuario:
gcloud functions deploy FUNCTION_NAME \ --no-gen2 \ --entry-point ENTRY_POINT \ --trigger-event providers/firebase.auth/eventTypes/user.create \ --trigger-resource YOUR_PROJECT_ID \ --runtime RUNTIME
Argumento | Descripción |
---|---|
FUNCTION_NAME |
Nombre registrado de las funciones de Cloud Run que vas a desplegar.
Puede ser el nombre de una función de tu código fuente o una cadena arbitraria. Si FUNCTION_NAME es una cadena arbitraria, debes incluir la marca --entry-point .
|
--entry-point ENTRY_POINT |
El nombre de una función o una clase en el código fuente. Opcional, a menos que no hayas usado FUNCTION_NAME
para especificar la función en el código fuente que se va a ejecutar durante la implementación. En ese caso, debes usar --entry-point para indicar el nombre de la función ejecutable.
|
--trigger-event NAME |
Nombre del tipo de evento que activa la función. En este caso, debe ser uno de los valores create o delete, como se indica arriba. |
--trigger-resource NAME |
El ID del proyecto (en este ejemplo, YOUR_PROJECT_ID ) del proyecto que contiene tu función y la autenticación de Firebase.
|
--runtime RUNTIME |
El nombre del tiempo de ejecución que estás usando. Para ver una lista completa, consulta la referencia de gcloud .
|