S'authentifier de manière anonyme avec Firebase sur les plates-formes Apple

Vous pouvez utiliser Firebase Authentication pour créer et utiliser des comptes anonymes temporaires pour s'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 appli 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 associer ses identifiants de connexion au compte anonyme afin qu'il puisse continuer à travailler avec ses données protégées lors de futures sessions.

Avant de commencer

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

    1. Dans Xcode, ouvrez le projet de votre application, puis accédez à File > 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 bibliothèque Firebase Authentication.
    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.
  2. Si vous n'avez pas encore associé votre application à votre projet Firebase, faites-le depuis la console Firebase.
  3. Activer l'authentification anonyme:
    1. Dans la console Firebase, ouvrez la section Authentification.
    2. Sur la page Sign-in Methods (Méthodes de connexion), activez Anonyme. méthode de connexion.
    3. Facultatif: Si vous avez mis à niveau votre projet vers Firebase Authentication with Identity Platform, vous pouvez activer le nettoyage automatique. Lorsque vous activez ce paramètre, les comptes anonymes de plus de 30 jours sont automatiquement supprimés. Dans les projets pour lesquels le nettoyage automatique est activé, l'authentification sont comptabilisées dans les limites d'utilisation ou les quotas de facturation. Voir Nettoyage automatique.

S'authentifier de manière anonyme avec Firebase

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

  1. Importez le module FirebaseCore dans votre UIApplicationDelegate, ainsi que toute autre Modules Firebase que votre délégué d'application utilise. Par exemple, pour utiliser Cloud Firestore et Authentication :

    SwiftUI

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

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-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()

    Swift

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

    Objective-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 le joindre. à votre struct App via UIApplicationDelegateAdaptor ou NSApplicationDelegateAdaptor Vous devez également désactiver le mélange des délégués d'application. Pour Pour en savoir plus, consultez les instructions de 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: :

    Swift

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

    Objective-C

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

    Swift

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

    Objective-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 pouvez l'autoriser à continuer à travailler avec son nouveau compte. Par exemple, faire en sorte que les articles que l'utilisateur ait ajoutés à son panier avant de s'inscrire dans le panier de leur nouveau compte. Pour cela, procédez comme suit :

  1. Lorsque l'utilisateur s'inscrit, suivez le flux de connexion du fournisseur d'authentification de l'utilisateur jusqu'à l'appel de l'une des méthodes FIRAuth.signInWith, sans l'inclure. Par exemple, récupérez le jeton d'ID Google de l'utilisateur, Jeton d'accès Facebook, ou adresse e-mail et mot de passe.
  2. Obtenez un FIRAuthCredential pour le nouveau fournisseur d'authentification:

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

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

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

Nettoyage automatique

Si vous avez mis à niveau votre projet vers Firebase Authentication with Identity Platform, vous pouvez activer le nettoyage automatique dans la console Firebase. Lorsque vous activez cette fonctionnalité, vous autorisez Firebase à supprimer automatiquement les comptes anonymes datant de plus de 30 jours. Dans les projets pour lesquels le nettoyage automatique est activé, l'authentification anonyme n'est pas comptabilisée dans les limites d'utilisation ni dans les quotas de facturation.

  • Tous les comptes anonymes créés après l'activation du nettoyage automatique peuvent être automatiquement supprimées à tout moment 30 jours après leur création.
  • Les comptes anonymes existants pourront être supprimés automatiquement 30 jours après l'activation du nettoyage automatique.
  • Si vous désactivez le nettoyage automatique, tous les comptes anonymes dont la suppression est programmée seront conservés dont la suppression est planifiée.
  • Si vous "passez à la version supérieure" d'un compte anonyme en l'associant à une méthode de connexion, le compte n'est pas automatiquement supprimé.

Si vous souhaitez savoir combien d'utilisateurs seront concerné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 le cloud Journalisation.

Étapes suivantes

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