Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Primeros pasos con Firebase Authentication en plataformas Apple

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Puede usar Firebase Authentication para permitir que los usuarios inicien sesión en su aplicación mediante uno o más métodos de inicio de sesión, incluido el inicio de sesión con dirección de correo electrónico y contraseña, y proveedores de identidad federados, como el inicio de sesión de Google y el inicio de sesión de Facebook. Este tutorial lo inicia con Firebase Authentication al mostrarle cómo agregar una dirección de correo electrónico y una contraseña para iniciar sesión en su aplicación.

Conecta tu aplicación a Firebase

  1. Instale el SDK de Firebase .
  2. En la consola de Firebase , agregue su aplicación a su proyecto de Firebase.

Agrega Firebase Authentication a tu aplicación

Use Swift Package Manager para instalar y administrar las dependencias de Firebase.

  1. En Xcode, con su proyecto de aplicación abierto, vaya a Archivo > Agregar paquetes .
  2. Cuando se le solicite, agregue el repositorio del SDK de las plataformas Apple de Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Elija la biblioteca de autenticación de Firebase.
  5. Cuando termine, Xcode comenzará a resolver y descargar automáticamente sus dependencias en segundo plano.

(Opcional) Realice prototipos y pruebas con Firebase Local Emulator Suite

Antes de hablar sobre cómo su aplicación autentica a los usuarios, presentemos un conjunto de herramientas que puede usar para crear prototipos y probar la funcionalidad de autenticación: Firebase Local Emulator Suite. Si está decidiendo entre técnicas de autenticación y proveedores, probando diferentes modelos de datos con datos públicos y privados mediante las reglas de seguridad de autenticación y Firebase, o creando prototipos de diseños de interfaz de usuario de inicio de sesión, poder trabajar localmente sin implementar servicios en vivo puede ser una gran idea. .

Un emulador de autenticación es parte de Local Emulator Suite, que permite que su aplicación interactúe con el contenido y la configuración de la base de datos emulada, así como, opcionalmente, con los recursos de su proyecto emulado (funciones, otras bases de datos y reglas de seguridad).

El uso del emulador de autenticación implica solo unos pocos pasos:

  1. Agregar una línea de código a la configuración de prueba de su aplicación para conectarse al emulador.
  2. Desde la raíz del directorio de tu proyecto local, ejecuta firebase emulators:start .
  3. Uso de la interfaz de usuario de Local Emulator Suite para la creación de prototipos interactivos, o la API REST del emulador de autenticación para pruebas no interactivas.

Una guía detallada está disponible en Conecte su aplicación al emulador de autenticación . Para obtener más información, consulte la introducción de Local Emulator Suite .

Ahora continuemos con cómo autenticar a los usuarios.

Inicializar el SDK de Firebase

En el delegado de tu aplicación, primero importa el SDK de Firebase:

Rápido

import FirebaseCore

C objetivo

@import FirebaseCore;

Luego, en el método application:didFinishLaunchingWithOptions: inicialice el objeto FirebaseApp :

Rápido

// Use Firebase library to configure APIs
FirebaseApp.configure()

C objetivo

// Use Firebase library to configure APIs
[FIRApp configure];

Escuche el estado de autenticación

Para cada una de las vistas de su aplicación que necesiten información sobre el usuario que inició sesión, adjunte un oyente al objeto FIRAuth . Se llama a este agente de escucha cada vez que cambia el estado de inicio de sesión del usuario.

Adjunte el oyente en el método viewWillAppear del controlador de vista:

Rápido

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

C objetivo

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

Y separe el oyente en el método viewWillDisappear del controlador de vista:

Rápido

Auth.auth().removeStateDidChangeListener(handle!)

C objetivo

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Registrar nuevos usuarios

Cree un formulario que permita a los nuevos usuarios registrarse en su aplicación utilizando su dirección de correo electrónico y una contraseña. Cuando un usuario complete el formulario, valide la dirección de correo electrónico y la contraseña proporcionadas por el usuario, luego páselas al método createUser :

Rápido

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // ...
}

C objetivo

[[FIRAuth auth] createUserWithEmail:email
                           password:password
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
  // ...
}];

Iniciar sesión de usuarios existentes

Cree un formulario que permita a los usuarios existentes iniciar sesión con su dirección de correo electrónico y contraseña. Cuando un usuario complete el formulario, llame al método signIn :

Rápido

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

C objetivo

[[FIRAuth auth] signInWithEmail:self->_emailField.text
                       password:self->_passwordField.text
                     completion:^(FIRAuthDataResult * _Nullable authResult,
                                  NSError * _Nullable error) {
  // ...
}];

Obtener información del usuario

Después de que un usuario inicie sesión correctamente, puede obtener información sobre el usuario. Por ejemplo, en su escucha de estado de autenticación :

Rápido

if let user = user {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  let uid = user.uid
  let email = user.email
  let photoURL = user.photoURL
  var multiFactorString = "MultiFactor: "
  for info in user.multiFactor.enrolledFactors {
    multiFactorString += info.displayName ?? "[DispayName]"
    multiFactorString += " "
  }
  // ...
}

C objetivo

if (user) {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  NSString *email = user.email;
  NSString *uid = user.uid;
  NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
  for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
    [multiFactorString appendString:info.displayName];
    [multiFactorString appendString:@" "];
  }
  NSURL *photoURL = user.photoURL;
  // ...
}

Próximos pasos

Aprenda a agregar soporte para otros proveedores de identidad y cuentas de invitados anónimos: