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
- Instale el SDK de Firebase .
- 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.
- En Xcode, con su proyecto de aplicación abierto, vaya a Archivo > Agregar paquetes .
- Cuando se le solicite, agregue el repositorio del SDK de las plataformas Apple de Firebase:
- Elija la biblioteca de autenticación de Firebase.
- Cuando termine, Xcode comenzará a resolver y descargar automáticamente sus dependencias en segundo plano.
https://github.com/firebase/firebase-ios-sdk
(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:
- Agregar una línea de código a la configuración de prueba de su aplicación para conectarse al emulador.
- Desde la raíz del directorio de tu proyecto local, ejecuta
firebase emulators:start
. - 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:
- Inicio de sesión de Google
- Inicio de sesión en Facebook
- Inicio de sesión en Twitter
- Inicio de sesión en GitHub
- Inicio de sesión anónimo