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

Authentification avec Firebase de manière anonyme sur les plates-formes Apple

Vous pouvez utiliser l'authentification Firebase 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 vous inscrire à votre application, vous pouvez lier leur informations de connexion au compte anonyme afin qu'ils puissent continuer à travailler avec leurs données protégées dans les sessions futures.

Avant que tu commences

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.

Ensuite, effectuez quelques étapes de configuration :

  1. Si vous n'êtes pas encore connecté votre application à votre projet Firebase, faites à partir de la console Firebase .
  2. Activer l'authentification anonyme :
    1. Dans la console Firebase , ouvrez la section Auth.
    2. Sur la page de connexion méthodes, activez le signe dans Anonyme méthode.

S'authentifier avec Firebase de manière anonyme

Lorsqu'un utilisateur déconnecté utilise une fonctionnalité d'application qui nécessite une authentification avec Firebase, connectez-vous anonymement en procédant comme suit :

  1. Importer le module Firebase dans votre UIApplicationDelegate :

    Rapide

    import Firebase

    Objectif c

    @import Firebase;
  2. Configurer une FirebaseApp instance partagée, généralement dans votre application application:didFinishLaunchingWithOptions: méthode:

    Rapide

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

    Objectif c

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Appelez le signInAnonymouslyWithCompletion: méthode:

    Rapide

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

    Objectif c

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

    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 pouvez l'autoriser à continuer son travail avec son nouveau compte. Par exemple, vous pouvez vouloir rendre les articles que l'utilisateur a ajoutés à son panier avant de s'inscrire panier d'achat du compte. Pour ce faire, procédez comme suit :

  1. Lorsque l'utilisateur se connecte vers le haut, complètent le flux de connexion pour le fournisseur d'authentification de l'utilisateur jusqu'à, mais sans inclure, en appelant l' un des FIRAuth.signInWith méthodes. Par exemple, obtenez le jeton d'identification Google, le jeton d'accès Facebook ou l'adresse e-mail et le mot de passe de l'utilisateur.
  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
    GIDAuthentication *authentication = user.authentication;
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken
                                     accessToken:authentication.accessToken];
    
    Identifiant Facebook
    Rapide
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    
    Objectif c
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
    Connexion par e-mail avec mot de passe
    Rapide
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    
    Objectif c
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
    
  3. Faire passer le FIRAuthCredential objet à l' ouverture de session de l' utilisateur linkWithCredential:completion: Procédé:

    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, un nouveau compte peut accéder aux données Firebase du compte anonyme de l'utilisateur.

Prochaines étapes

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