Comience con la autenticación de Firebase en plataformas Apple

Puedes usar Firebase Authentication para permitir que los usuarios inicien sesión en tu aplicación usando 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 con Google y el inicio de sesión con Facebook. Este tutorial lo ayuda a comenzar con la autenticación de Firebase mostrándole cómo agregar una dirección de correo electrónico y una contraseña de inicio de sesión a su aplicación.

Conecte su aplicación a Firebase

  1. Instale el SDK de Firebase .
  2. En Firebase console , agrega tu aplicación a tu proyecto de Firebase.

Agregue autenticación de Firebase a su aplicación

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

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

(Opcional) Prototipo y prueba 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 utilizar para crear prototipos y probar la funcionalidad de autenticación: Firebase Local Emulator Suite. Si está decidiendo entre proveedores y técnicas de autenticación, probando diferentes modelos de datos con datos públicos y privados usando autenticación y reglas de seguridad de 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 del proyecto emulado (funciones, otras bases de datos y reglas de seguridad).

Usar el 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 su proyecto local, ejecute firebase emulators:start .
  3. Usar 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.

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

Ahora continuemos con cómo autenticar 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 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 oyente 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 nuevos usuarios registrarse en su aplicación utilizando su dirección de correo electrónico y una contraseña. Cuando un usuario completa 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 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 completa 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 inicia sesión correctamente, puede obtener información sobre el usuario. Por ejemplo, en su oyente 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 cómo agregar soporte para otros proveedores de identidad y cuentas de invitados anónimos: