Vous pouvez utiliser Firebase Authentication pour autoriser les utilisateurs à se connecter à votre application à l'aide d'une ou de plusieurs méthodes de connexion, y compris la connexion avec une adresse e-mail et un mot de passe, ainsi que des fournisseurs d'identité fédérés tels que Google Sign-In et Facebook Login. Ce tutoriel vous aide à commencer à utiliser Firebase Authentication en vous montrant comment ajouter une connexion par adresse e-mail et mot de passe à votre application.
Associer votre application à Firebase
- Installez le SDK Firebase.
- Dans la console Firebase, ajoutez votre application à votre projet Firebase.
Ajouter Firebase Authentication à votre application
Utilisez Swift Package Manager pour installer et gérer les dépendances Firebase.
- Dans Xcode, à partir de votre projet d'application ouvert, accédez à File > Add Packages (Fichier > Ajouter des packages).
- Lorsque vous y êtes invité, ajoutez le dépôt du SDK des plates-formes Firebase pour Apple :
- Choisissez la bibliothèque Firebase Authentication.
- Ajoutez l'indicateur
-ObjC
à la section Other Linker Flags (Autres indicateurs Linker) des paramètres de compilation de votre cible. - Lorsque vous avez terminé, Xcode commence à résoudre et à télécharger automatiquement vos dépendances en arrière-plan.
https://github.com/firebase/firebase-ios-sdk.git
(Facultatif) Prototypage et test avec Firebase Local Emulator Suite
Avant de parler de la façon dont votre application authentifie les utilisateurs, présentons un ensemble d'outils que vous pouvez utiliser pour prototyper et tester la fonctionnalité Authentication : Firebase Local Emulator Suite. Si vous choisissez entre des techniques et des fournisseurs d'authentification, que vous testez différents modèles de données avec des données publiques et privées à l'aide de Authentication et Firebase Security Rules, ou que vous prototypez des conceptions d'UI de connexion, il peut être judicieux de pouvoir travailler en local sans déployer de services en direct.
Un émulateur Authentication fait partie de Local Emulator Suite, ce qui permet à votre application d'interagir avec le contenu et la configuration de la base de données émulée, ainsi que, éventuellement, avec les ressources de votre projet émulées (fonctions, autres bases de données et règles de sécurité).
Pour utiliser l'émulateur Authentication, procédez comme suit:
- Ajoutez une ligne de code à la configuration de test de votre application pour vous connecter à l'émulateur.
- À partir de la racine du répertoire de votre projet local, exécutez
firebase emulators:start
. - Utilisation de l'UI Local Emulator Suite pour le prototypage interactif ou de l'API REST de l'émulateur Authentication pour les tests non interactifs.
Pour en savoir plus, consultez le guide détaillé Connecter votre application à l'émulateur Authentication. Pour en savoir plus, consultez la présentation de Local Emulator Suite.
Passons maintenant à l'authentification des utilisateurs.
Initialiser le SDK Firebase
Dans votre délégué d'application, commencez par importer le SDK Firebase:
Swift
import FirebaseCore
Objective-C
@import FirebaseCore;
Ensuite, dans la méthode application:didFinishLaunchingWithOptions:
, initialisez l'objet FirebaseApp
:
Swift
// Use Firebase library to configure APIs
FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs
[FIRApp configure];
Écouter l'état de l'authentification
Pour chacune des vues de votre application qui ont besoin d'informations sur l'utilisateur connecté, associez un écouteur à l'objet FIRAuth
. Cet écouteur est appelé chaque fois que l'état de connexion de l'utilisateur change.
Associez l'écouteur dans la méthode viewWillAppear
du contrôleur de vue:
Swift
handle = Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
Objective-C
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
Et dissociez l'écouteur dans la méthode viewWillDisappear
du contrôleur de vue:
Swift
Auth.auth().removeStateDidChangeListener(handle!)
Objective-C
[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];
Enregistrer de nouveaux utilisateurs
Créez un formulaire permettant aux nouveaux utilisateurs de s'inscrire à votre application avec leur adresse e-mail et un mot de passe. Lorsqu'un utilisateur remplit le formulaire, validez l'adresse e-mail et le mot de passe fournis par l'utilisateur, puis transmettez-les à la méthode 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) {
// ...
}];
Se connecter aux utilisateurs existants
Créez un formulaire permettant aux utilisateurs existants de se connecter avec leur adresse e-mail et leur mot de passe. Lorsqu'un utilisateur remplit le formulaire, appelez la méthode 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) {
// ...
}];
Obtenir des informations sur l'utilisateur
Une fois qu'un utilisateur s'est connecté, vous pouvez obtenir des informations sur celui-ci. Par exemple, dans votre écouteur d'état d'authentification:
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;
// ...
}
Étapes suivantes
Découvrez comment ajouter la compatibilité avec d'autres fournisseurs d'identité et des comptes invités anonymes: