Vous pouvez utiliser Firebase Authentication pour permettre aux utilisateurs de se connecter à votre application à l'aide d'une ou plusieurs méthodes de connexion, y compris la connexion par adresse e-mail et mot de passe, et les fournisseurs d'identité fédérée tels que Se connecter avec Google et Se connecter avec Facebook. Ce tutoriel vous explique comment commencer à utiliser Firebase Authentication en ajoutant une connexion par adresse e-mail et mot de passe à votre application.
Associer 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é et configuré pour Firebase.
Ajoutez le SDK Firebase C++ à 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, vous téléchargez les fichiers de configuration Firebase depuis la console, puis vous les déplacez dans votre projet C++).
Inscrire de nouveaux utilisateurs
Créez un formulaire permettant aux nouveaux utilisateurs de s'inscrire à votre application à l'aide de leur adresse e-mail et d'un mot de passe. Lorsqu'un utilisateur remplit le formulaire, validez l'adresse e-mail et le mot de passe qu'il a fournis, puis transmettez-les à la 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 enregistrant un rappel sur l'objet CreateUserWithEmailAndPasswordLastResult Future ou, si vous écrivez un jeu ou une application avec une boucle de mise à jour périodique, en interrogeant l'état dans la boucle de mise à jour.
Par exemple, en utilisant un 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);
Pour utiliser l'interrogation, faites quelque chose comme dans l'exemple suivant dans la boucle de mise à jour de votre jeu :
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 des utilisateurs existants
Créez un formulaire permettant aux utilisateurs existants de se connecter à l'aide de leur adresse e-mail et de leur mot de passe. Lorsqu'un utilisateur remplit le formulaire, appelez la 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 vous avez obtenu le résultat de 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 à l'objet d'authentification global. Cet écouteur est appelé chaque fois que l'état de connexion de l'utilisateur change. Étant donné que l'écouteur ne s'exécute qu'une fois l'objet d'authentification entièrement initialisé et une fois tous les appels réseau terminés, il s'agit du meilleur endroit pour obtenir des informations sur l'utilisateur connecté.
Créez l'écouteur en implémentant la classe abstraite firebase::auth::AuthStateListener. Par exemple, pour créer un écouteur qui obtient des informations sur l'utilisateur lorsqu'il se connecte, procédez comme suit :
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 à la méthode AddAuthStateListener de l'objet firebase::auth::Auth :
MyAuthStateListener state_change_listener;
auth->AddAuthStateListener(&state_change_listener);
Étapes suivantes
Découvrez comment ajouter la compatibilité avec d'autres fournisseurs d'identité et des comptes invités anonymes :