S'authentifier avec Firebase de manière anonyme à l'aide de C++

Vous pouvez utiliser Firebase Authentication pour créer et utiliser des comptes anonymes temporaires afin de 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 d'utiliser 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 à utiliser ses données protégées lors de futures sessions.

Avant de commencer

  1. Ajoutez Firebase à votre projet C++.
  2. Si vous n'avez pas encore associé votre application à votre projet Firebase, faites-le depuis la Firebase console.
  3. Activez l'authentification anonyme :
    1. Dans la Firebase console, accédez à Sécurité > Authentification.
    2. Dans l'onglet Méthode de connexion, activez le fournisseur de connexion Anonyme.
    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 datant de plus de 30 jours sont automatiquement supprimés. Dans les projets pour lesquels le nettoyage automatique est activé, l'authentification anonyme n'est plus comptabilisée dans les limites d'utilisation ni dans les quotas de facturation. Consultez la section Nettoyage automatique.

S'authentifier auprès de Firebase de manière anonyme

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 :

La classe Auth est la passerelle pour tous les appels d'API.
  1. Ajoutez les fichiers d'en-tête Auth et App :
    #include "firebase/app.h"
    #include "firebase/auth.h"
  2. Dans votre code d'initialisation, créez une firebase::App classe.
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
  3. Acquérez la classe firebase::auth::Auth pour votre firebase::App. Il existe un mappage un-à-un entre App et Auth.
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
  • Appelez Auth::SignInAnonymously.
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymously();
  • Si votre programme comporte une boucle de mise à jour qui s'exécute régulièrement (par exemple, 30 ou 60 fois par seconde), vous pouvez vérifier les résultats une fois par mise à jour avec Auth::SignInAnonymouslyLastResult :
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::AuthResult auth_result = *result.result();
        printf("Sign in succeeded for `%s`\n",
               auth_result.user.display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    Vous pouvez également enregistrer un rappel sur l'objet Future si votre programme est axé sur les événements.
  • Convertir un compte anonyme en compte permanent

    Lorsqu'un utilisateur anonyme s'inscrit à votre application, vous pouvez lui permettre de continuer à travailler avec son nouveau compte. Par exemple, vous pouvez rendre les articles qu'il a ajoutés à son panier avant de s'inscrire disponibles dans le panier de son nouveau compte. Pour cela, procédez comme suit :

    1. Lorsque l'utilisateur s'inscrit, suivez le flux de connexion pour le fournisseur d'authentification de l'utilisateur jusqu'à l'appel de l'une des Auth::SignInWith méthodes, mais sans l'inclure. Par exemple, obtenez le jeton d'ID Google de l'utilisateur, jeton d'accès Facebook, ou adresse e-mail et mot de passe.
    2. Obtenez un auth::Credential pour le nouveau fournisseur d'authentification :

      Google Sign-In
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      Connexion Facebook
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      Connexion par adresse e-mail et mot de passe
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
    3. Transmettez l'objet auth::Credential à la méthode LinkWithCredential de l'utilisateur connecté :

      // Link the new credential to the currently active user.
      firebase::auth::User current_user = auth->current_user();
      firebase::Future<firebase::auth::AuthResult> result =
          current_user.LinkWithCredential(credential);

    Si l'appel à LinkWithCredential 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 Firebase console. 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 supprimés automatiquement à tout moment après 30 jours suivant leur création.
    • Les comptes anonymes existants peuvent ê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 le resteront programmés pour être supprimés.
    • Si vous "mettez à niveau" un compte anonyme en l'associant à une méthode de connexion, il ne sera pas supprimé automatiquement.

    Si vous souhaitez voir le nombre d'utilisateurs 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 Cloud Logging.

    Étapes suivantes

    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.