Catch up on everthing we announced at this year's Firebase Summit. Learn more

Premiers pas avec l'authentification Firebase sur les plates-formes Apple

Vous pouvez utiliser l'authentification Firebase pour permettre aux utilisateurs de se connecter à votre application à l'aide d'une ou plusieurs méthodes de connexion, y compris l'adresse e-mail et la connexion par mot de passe, et des fournisseurs d'identité fédérés tels que Google Sign-in et Facebook Login. Ce didacticiel vous permet de démarrer avec Firebase Authentication en vous montrant comment ajouter une adresse e-mail et un mot de passe de connexion à votre application.

Connectez votre application à Firebase

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

Ajouter l'authentification Firebase à votre application

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

  1. Dans Xcode, avec votre projet d'application ouvert, accédez à Fichier> Paquets Swift> Ajouter un package de dépendance.
  2. Lorsque vous y êtes invité, ajoutez le référentiel SDK des plates-formes Firebase Apple :
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Choisissez la bibliothèque d'authentification Firebase.
  5. Une fois terminé, Xcode commencera automatiquement à résoudre et à télécharger vos dépendances en arrière-plan.

(Facultatif) Prototyper et tester avec Firebase Local Emulator Suite

Avant de parler de la façon dont votre application authentifie les utilisateurs, introduisons un ensemble d'outils que vous pouvez utiliser pour prototyper et tester la fonctionnalité d'authentification : Firebase Local Emulator Suite. Si vous choisissez parmi les techniques et les fournisseurs d'authentification, si vous essayez différents modèles de données avec des données publiques et privées à l'aide des règles de sécurité d'authentification et de Firebase, ou si vous créez des prototypes de conceptions d'interface utilisateur de connexion, pouvoir travailler localement sans déployer de services en direct peut être une excellente idée. .

Un émulateur d'authentification fait partie de la suite d'émulateurs locaux, 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 d'authentification n'implique que quelques étapes :

  1. Ajout d'une ligne de code à la configuration de test de votre application pour vous connecter à l'émulateur.
  2. A partir de la racine de votre répertoire local du projet, en cours d' exécution firebase emulators:start .
  3. Utilisation de l'interface utilisateur de la suite d'émulateurs locaux pour le prototypage interactif ou de l'API REST de l'émulateur d'authentification pour les tests non interactifs.

Un guide détaillé est disponible à Connect votre application à l'émulateur d' authentification . Pour plus d' informations, consultez la mise en place Emulator locale Suite .

Voyons maintenant comment authentifier les utilisateurs.

Initialiser le SDK Firebase

Dans votre délégué d'application, importez d'abord le SDK Firebase :

Rapide

import Firebase

Objectif c

@import Firebase;

Puis, dans l' application:didFinishLaunchingWithOptions: méthode, initialiser le FirebaseApp objet:

Rapide

// Use Firebase library to configure APIs
FirebaseApp.configure()

Objectif c

// Use Firebase library to configure APIs
[FIRApp configure];

Écouter l'état d'authentification

Pour chacun de vos points de vue de l' application qui ont besoin d' informations sur l'utilisateur connecté, connectez un écouteur au FIRAuth objet. Cet écouteur est appelé chaque fois que l'état de connexion de l'utilisateur change.

Attachez l'auditeur dans le contrôleur de vue viewWillAppear méthode:

Rapide

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

Objectif c

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

Et détacher l'auditeur dans le contrôleur de vue viewWillDisappear méthode:

Rapide

Auth.auth().removeStateDidChangeListener(handle!)

Objectif c

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Inscrivez de nouveaux utilisateurs

Créez un formulaire qui permet aux nouveaux utilisateurs de s'inscrire à votre application en utilisant leur adresse e-mail et un mot de passe. Lorsqu'un utilisateur remplit le formulaire, valider l'adresse e - mail et mot de passe fourni par l'utilisateur, puis les passer à la createUser méthode:

Rapide

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // ...
}

Objectif c

[[FIRAuth auth] createUserWithEmail:email
                           password:password
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
  // ...
}];

Connectez-vous aux utilisateurs existants

Créez un formulaire qui permet 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 signIn méthode:

Rapide

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

Objectif 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é avec succès, vous pouvez obtenir des informations sur l'utilisateur. Par exemple, dans votre état d' authentification auditeur :

Rapide

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

Objectif 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;
  // ...
}

Prochaines étapes

Découvrez comment ajouter la prise en charge d'autres fournisseurs d'identité et de comptes invités anonymes :