Premiers pas avec Firebase Authentication sur les plates-formes Apple

Vous pouvez utiliser Firebase Authentication pour permettre aux utilisateurs de 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, et des fournisseurs d'identité fédérés tels que Google Sign-In et Facebook Login. Ce tutoriel vous explique comment commencer à utiliser Firebase Authentication en vous montrant comment ajouter la connexion avec une adresse e-mail et un mot de passe à votre application.

Associer votre application à Firebase

  1. Installez le SDK Firebase.
  2. Dans la Firebase console, ajoutez votre application à votre projet Firebase.

Ajouter Firebase Authentication à votre application

Utilisez Swift Package Manager pour installer et gérer les dépendances Firebase.

  1. Dans Xcode, à partir de votre projet d'application ouvert, accédez à File > Add Packages (Fichier > Ajouter des packages).
  2. Lorsque vous y êtes invité, ajoutez le dépôt du SDK des plates-formes Firebase pour Apple :
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Choisissez la Firebase Authentication bibliothèque.
  5. Ajoutez l'indicateur -ObjC à la section Other Linker Flags (Autres indicateurs Linker) des paramètres de compilation de votre cible.
  6. Lorsque vous avez terminé, Xcode commence à résoudre et à télécharger automatiquement vos dépendances en arrière-plan.

(Facultatif) Créer un prototype et tester 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 créer un prototype et tester la fonctionnalité Authentication: Firebase Local Emulator Suite. Si vous choisissez entre différentes techniques et différents fournisseurs d'authentification, si vous essayez différents modèles de données avec des données publiques et privées à l'aide de Authentication et Firebase Security Rules, ou si vous créez un prototype de conception d'UI de connexion, il peut être judicieux de pouvoir travailler localement sans déployer de services en direct.

Un Authentication émulateur fait partie de Local Emulator Suite, qui permet à votre application d'interagir avec le contenu et la configuration de la base de données émulée, ainsi qu'avec les ressources de votre projet émulé (fonctions, autres bases de données et règles de sécurité).

L'utilisation de l'émulateur Authentication ne nécessite que quelques étapes :

  1. Ajouter une ligne de code à la configuration de test de votre application pour vous connecter à l'émulateur.
  2. À partir de la racine du répertoire de votre projet en local, exécutez firebase emulators:start.
  3. Utilisez l'Local Emulator Suite UI pour le prototypage interactif ou l' Authentication émulateur API REST pour les tests non interactifs.

Un guide détaillé est disponible dans Connecter votre application à l'émulateur Authentication. Pour en savoir plus, consultez la Local Emulator Suite introduction.

Voyons maintenant comment authentifier les utilisateurs.

Initialiser le SDK Firebase

Dans le délégué de votre application, importez d'abord 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 d'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) {
      // ...
    }];

Dissociez l'écouteur dans la méthode viewWillDisappear du contrôleur de vue :

Swift

Auth.auth().removeStateDidChangeListener(handle!)

Objective-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Inscrire de nouveaux utilisateurs

Créez un formulaire permettant aux nouveaux utilisateurs de s'inscrire à votre application à l'aide de leur adresse e-mail et d'un mot de passe. Lorsqu'un utilisateur remplit le formulaire, validez l'adresse e-mail et le mot de passe fournis, 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) {
  // ...
}];

Connecter des utilisateurs existants

Créez un formulaire permettant aux utilisateurs existants de se connecter à l'aide de leur adresse e-mail et de 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 les utilisateurs

Une fois qu'un utilisateur s'est connecté, vous pouvez obtenir des informations sur lui. 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é pour d'autres fournisseurs d'identité et des comptes invités anonymes :