Premiers pas avec Firebase Authentication en C++

Vous pouvez utiliser Firebase Authentication pour autoriser les utilisateurs à se connecter à votre appli avec une ou d'autres méthodes de connexion, y compris la connexion par adresse e-mail et par mot de passe, et d'identité fédérée tels que Google Sign-In et Facebook Login. Ce ce tutoriel vous montre comment ajouter Firebase Authentication adresse e-mail et mot de passe de connexion à votre application.

Connecter votre projet C++ à Firebase

Avant de pouvoir utiliser Firebase Authentication vous devez:

  • Enregistrez votre projet C++ et configurez-le pour utiliser Firebase.

    Si votre projet C++ utilise déjà Firebase, il est déjà enregistré. configurés pour Firebase.

  • Ajoutez le SDK C++ Firebase à votre projet C++.

Notez que l'ajout de Firebase à votre projet C++ implique des tâches à la fois dans la console Firebase et dans votre projet C++ ouvert (par exemple, si vous téléchargez les fichiers de configuration Firebase depuis la console, puis déplacez-les dans votre projet C++).

Inscrire de nouveaux utilisateurs

Créez un formulaire permettant aux nouveaux utilisateurs de s'inscrire à votre appli à l'aide de leur une adresse e-mail et un mot de passe. Lorsqu'un utilisateur remplit le formulaire, validez le l'adresse e-mail et le mot de passe fournis par l'utilisateur, puis transmettez-les au Méthode CreateUserWithEmailAndPassword:

firebase::Future<firebase::auth::AuthResult> result =
    auth->CreateUserWithEmailAndPassword(email, password);

Vous pouvez vérifier l'état de l'opération de création de compte en vous inscrivant un rappel sur l'objet Future CreateUserWithEmailAndPasswordLastResult ; si vous écrivez un jeu ou une application avec une sorte de boucle de mise à jour périodique, d'interroger l'état dans la boucle de mise à jour.

Par exemple, en utilisant un objet Future:

firebase::Future<firebase::auth::AuthResult> result =
    auth->CreateUserWithEmailAndPasswordLastResult();

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::AuthResult>& result,
       void* user_data) {
      // `user_data` is the same as &my_program_context, below.
      // Note that we can't capture this value in the [] because std::function
      // is not supported by our minimum compiler spec (which is pre C++11).
      MyProgramContext* program_context =
          static_cast<MyProgramContext*>(user_data);

      // Process create user result...
      (void)program_context;
    },
    &my_program_context);

Ou, pour utiliser les sondages, faites quelque chose comme l'exemple suivant dans le mise à jour en boucle:

firebase::Future<firebase::auth::AuthResult> result =
    auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::AuthResult* auth_result = *result.result();
    printf("Create user succeeded for email %s\n", auth_result.user.email().c_str());
  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

Connecter les utilisateurs existants

Créer un formulaire permettant aux utilisateurs existants de se connecter à l'aide de leur adresse e-mail et un mot de passe. Lorsqu'un utilisateur remplit le formulaire, appelez la méthode Méthode SignInWithEmailAndPassword:

firebase::Future<firebase::auth::AuthResult> result =
    auth->SignInWithEmailAndPassword(email, password);

Obtenez le résultat de l'opération de connexion de la même manière que pour l'inscription.

Définir un écouteur d'état d'authentification et obtenir les données du compte

Pour répondre aux événements de connexion et de déconnexion, associez un écouteur au d'authentification unique. Cet écouteur est appelé dès que l'utilisateur se connecte les changements d'état. Comme l'écouteur ne s'exécute qu'une fois que l'objet d'authentification est entièrement initialisé. Une fois les appels réseau effectués, il est préférable pour obtenir des informations sur l'utilisateur connecté.

Créez l'écouteur en implémentant firebase::auth::AuthStateListener. une classe abstraite. Par exemple, pour créer un écouteur qui obtient des informations sur l'utilisateur lorsqu'il se connecte:

class MyAuthStateListener : public firebase::auth::AuthStateListener {
 public:
  void OnAuthStateChanged(firebase::auth::Auth* auth) override {
    firebase::auth::User user = auth.current_user();
    if (user.is_valid()) {
      // User is signed in
      printf("OnAuthStateChanged: signed_in %s\n", user.uid().c_str());
      const std::string displayName = user.DisplayName();
      const std::string emailAddress = user.Email();
      const std::string photoUrl = user.PhotoUrl();
    } else {
      // User is signed out
      printf("OnAuthStateChanged: signed_out\n");
    }
    // ...
  }
};

Associez l'écouteur au paramètre de l'objet firebase::auth::Auth. Méthode AddAuthStateListener:

MyAuthStateListener state_change_listener;
auth->AddAuthStateListener(&state_change_listener);

Étapes suivantes

Découvrez comment ajouter la prise en charge d'autres fournisseurs d'identité et d'invités anonymes comptes: