Puedes usar Firebase Authentication para permitir que los usuarios accedan a la app con uno o más métodos de acceso, que incluyen el acceso con dirección de correo electrónico y contraseña, y proveedores de identidad federada, como Acceso con Google y Acceso con Facebook. Este instructivo te muestra cómo agregar un acceso con dirección de correo electrónico y contraseña a la app para comenzar con Firebase Authentication.
Conecta la app a Firebase
- Instala el SDK de Firebase.
- En Firebase console, agrega la app al proyecto de Firebase.
Agrega Firebase Authentication a la app
Agrega la dependencia para Firebase Authentication a
Podfile
de tu proyecto:pod 'Firebase/Auth'
Ejecuta
pod install
y abre el archivo.xcworkspace
creado.
Inicializa el SDK de Firebase
En el delegado de la app, importa en primer lugar el SDK de Firebase:
Swift
import Firebase
Objective-C
@import Firebase;
Luego, en el método application:didFinishLaunchingWithOptions:
, inicializa el objeto FirebaseApp
:
Swift
// Use Firebase library to configure APIs
FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs
[FIRApp configure];
Detecta el estado de autenticación
Para cada vista de tu app que necesite información sobre el usuario que accedió, adjunta un objeto de escucha al objeto FIRAuth
. Se llamará a este objeto de escucha cada vez que cambie el estado de acceso del usuario.
Adjunta el objeto de escucha en el método viewWillAppear
del controlador de vista:
Swift
handle = Auth.auth().addStateDidChangeListener { (auth, user) in
// ...
}
Objective-C
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
Además, desvincula el objeto de escucha del método viewWillDisappear
del controlador de vista:
Swift
Auth.auth().removeStateDidChangeListener(handle!)
Objective-C
[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];
Registra usuarios nuevos
Crea un formulario que permita a los usuarios nuevos registrarse en tu app mediante su dirección de correo electrónico y una contraseña. Cuando un usuario complete el formulario, valida la dirección de correo electrónico y la contraseña que proporcionó el usuario para después pasarlas al método createUser
:
Swift
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
// ...
}
Objective-C
[[FIRAuth auth] createUserWithEmail:email
password:password
completion:^(FIRAuthDataResult * _Nullable authResult,
NSError * _Nullable error) {
// ...
}];
Acceso de usuarios existentes
Crea un formulario que permita a los usuarios existentes acceder con su dirección de correo electrónico y una contraseña. Cuando un usuario complete el formulario, llama al método signIn
:
Swift
Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
guard let strongSelf = self else { return }
// ...
}
Objective-C
[[FIRAuth auth] signInWithEmail:self->_emailField.text
password:self->_passwordField.text
completion:^(FIRAuthDataResult * _Nullable authResult,
NSError * _Nullable error) {
// ...
}];
Obtén información del usuario
Cuando un usuario acceda correctamente, podrás obtener información sobre él. Por ejemplo, en el objeto de escucha del estado de autenticación, haz lo siguiente:
Swift
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 += " "
}
// ...
}
Objective-C
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;
// ...
}
Pasos siguientes
Obtén información sobre cómo admitir otros proveedores de identidad y cuentas de invitado anónimas: