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:

import FirebaseCore
@import FirebaseCore;

Luego, en el application:didFinishLaunchingWithOptions: :, inicialice el objeto FirebaseApp :

// Use Firebase library to configure APIs
FirebaseApp.configure()
// 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:

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

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

Auth.auth().removeStateDidChangeListener(handle!)
[[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 :

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
 
// ...
}
[[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 :

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf
= self else { return }
 
// ...
}
[[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 :

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
+= " "
 
}
 
// ...
}
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: