Catch up on highlights from Firebase at Google I/O 2023. Learn more

Authentification anonyme avec Firebase sur les plates-formes Apple

Vous pouvez utiliser Firebase Authentication pour créer et utiliser des comptes anonymes temporaires pour vous authentifier auprès de Firebase. Ces comptes anonymes temporaires peuvent être utilisés pour permettre aux utilisateurs qui ne se sont pas encore inscrits à votre application de travailler avec des données protégées par des règles de sécurité. Si un utilisateur anonyme décide de s'inscrire à votre application, vous pouvez lier ses identifiants de connexion au compte anonyme afin qu'il puisse continuer à utiliser ses données protégées lors de sessions futures.

Avant que tu commences

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

  1. Dans Xcode, avec votre projet d'application ouvert, accédez à File > Add Packages .
  2. Lorsque vous y êtes invité, ajoutez le dépôt du SDK des plates-formes Apple Firebase :
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Choisissez la bibliothèque Firebase Authentication.
  5. Une fois terminé, Xcode commencera automatiquement à résoudre et à télécharger vos dépendances en arrière-plan.

Ensuite, effectuez quelques étapes de configuration :

  1. Si vous n'avez pas encore connecté votre application à votre projet Firebase, faites-le depuis la console Firebase .
  2. Activer l'authentification anonyme :
    1. Dans la console Firebase , ouvrez la section Auth .
    2. Sur la page Méthodes de connexion , activez la méthode de connexion anonyme .
    3. Facultatif : activez le nettoyage automatique. Lorsque vous activez ce paramètre, les comptes anonymes de plus de 30 jours seront automatiquement supprimés. Dans les projets où le nettoyage automatique est activé, l'authentification anonyme ne comptera plus dans les limites d'utilisation ou les quotas de facturation. Voir Nettoyage automatique .

Authentifiez-vous anonymement auprès de Firebase

Lorsqu'un utilisateur déconnecté utilise une fonctionnalité d'application qui nécessite une authentification auprès de Firebase, connectez-le de manière anonyme en procédant comme suit :

  1. Importez le module FirebaseCore dans votre UIApplicationDelegate , ainsi que tout autre module Firebase utilisé par votre délégué d'application. Par exemple, pour utiliser Cloud Firestore et Authentification :

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Rapide

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objectif c

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Configurez une instance partagée FirebaseApp dans la méthode application(_:didFinishLaunchingWithOptions:) de votre délégué d'application :

    SwiftUI

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

    Rapide

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

    Objectif c

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Si vous utilisez SwiftUI, vous devez créer un délégué d'application et l'attacher à votre structure App via UIApplicationDelegateAdaptor ou NSApplicationDelegateAdaptor . Vous devez également désactiver le swizzling des délégués d'application. Pour plus d'informations, consultez les instructions SwiftUI .

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. Appelez la méthode signInAnonymouslyWithCompletion: : :

    Rapide

    Auth.auth().signInAnonymously { authResult, error in
      // ...
    }
    

    Objectif c

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
    
  5. Si la méthode signInAnonymouslyWithCompletion: se termine sans erreur, vous pouvez obtenir les données de compte de l'utilisateur anonyme à partir de l'objet FIRAuthDataResult :

    Rapide

    guard let user = authResult?.user else { return }
    let isAnonymous = user.isAnonymous  // true
    let uid = user.uid
    

    Objectif c

    FIRUser *user = authResult.user;
    BOOL isAnonymous = user.anonymous;  // YES
    NSString *uid = user.uid;
    

Convertir un compte anonyme en compte permanent

Lorsqu'un utilisateur anonyme s'inscrit à votre application, vous souhaiterez peut-être lui permettre de continuer à travailler avec son nouveau compte. Par exemple, vous souhaiterez peut-être que les articles que l'utilisateur a ajoutés à son panier avant de s'inscrire soient disponibles dans son nouveau compte. panier d'achat du compte. Pour ce faire, procédez comme suit :

  1. Lorsque l'utilisateur s'inscrit, terminez le flux de connexion pour le fournisseur d'authentification de l'utilisateur jusqu'à, mais non compris, l'appel de l'une des méthodes FIRAuth.signInWith . Par exemple, obtenez le jeton d'identification Google de l'utilisateur, le jeton d'accès Facebook ou l'adresse e-mail et le mot de passe.
  2. Obtenez un FIRAuthCredential pour le nouveau fournisseur d'authentification :

    Connexion Google
    Rapide
    guard
      let authentication = user?.authentication,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: idToken,
                                                   accessToken: authentication.accessToken)
    
    Objectif c
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString
                                     accessToken:result.user.accessToken.tokenString];
    
    Identifiant Facebook
    Rapide
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    
    Objectif c
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
    Connexion par e-mail et mot de passe
    Rapide
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    
    Objectif c
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
    
  3. Transmettez l'objet FIRAuthCredential à la méthode linkWithCredential:completion: de l'utilisateur connecté :

    Rapide
        user.link(with: credential) { authResult, error in
      // ...
    }
    }
    
    Objectif c
        [[FIRAuth auth].currentUser linkWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];
    

Si l'appel à linkWithCredential:completion: réussit, le nouveau compte de l'utilisateur peut accéder aux données Firebase du compte anonyme.

Nettoyage automatique

Lorsque vous activez le nettoyage automatique dans la console Firebase, les comptes anonymes de plus de 30 jours sont automatiquement supprimés. L'activation de ce paramètre empêche votre base de données d'utilisateurs de se remplir de comptes inutilisés. Dans les projets où le nettoyage automatique est activé, l'authentification anonyme ne sera pas prise en compte dans les limites d'utilisation ou les quotas de facturation.

  • Tous les comptes anonymes créés après l'activation du nettoyage automatique seront supprimés 30 jours après la création.
  • Les comptes anonymes créés avant l'activation du nettoyage automatique seront supprimés environ 30 jours après l'activation du nettoyage automatique.
  • Si vous désactivez le nettoyage automatique, tous les comptes anonymes programmés pour être supprimés resteront programmés pour être supprimés.
  • Si vous "mettez à niveau" un compte anonyme en le liant à n'importe quelle méthode de connexion, le compte ne sera pas automatiquement supprimé.

Si vous souhaitez voir combien d'utilisateurs seront affectés avant d'activer cette fonctionnalité et que vous avez mis à niveau votre projet vers Firebase Authentication with Identity Platform , vous pouvez filtrer par is_anon dans Cloud Logging .

Prochaines étapes

Maintenant que les utilisateurs peuvent s'authentifier auprès de Firebase, vous pouvez contrôler leur accès aux données de votre base de données Firebase à l'aide des règles Firebase .