Google 致力于为黑人社区推动种族平等。查看具体举措

S'authentifier anonymement auprès de Firebase à l'aide de C++

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

  1. Ajoutez Firebase à votre projet C++ .
  2. Si vous n'avez pas encore connecté votre application à votre projet Firebase, faites-le depuis la console Firebase .
  3. 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 : 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 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 :

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 classe firebase::App .
    #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. Obtenez la 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::User*> result = auth->SignInAnonymously();
    
  • Si votre programme a une boucle de mise à jour qui s'exécute régulièrement (disons à 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::User*> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::User* user = *result.result();
        printf("Sign in succeeded for `%s`\n", user->display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    Ou, si votre programme est piloté par des événements, vous préférerez peut-être pour enregistrer un rappel sur le Future .
  • 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 Auth::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 auth::Credential pour le nouveau fournisseur d'authentification :

      Connexion Google
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      Connexion Facebook
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      placeholder7 Connexion par 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::User*> result =
          current_user->LinkWithCredential(credential);
      

    Si l'appel à LinkWithCredential réussit, 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 de plus de 30 jours. 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 peuvent être automatiquement supprimés à tout moment après 30 jours après la création.
    • Les comptes anonymes créés avant l'activation du nettoyage automatique pourront être supprimés automatiquement à partir de 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. Ces comptes ne sont pas pris en compte dans les limites d'utilisation ou les quotas de facturation.
    • 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 .