Comience con la autenticación de Firebase en C++

Puedes usar Firebase Authentication para permitir que los usuarios inicien sesión en tu aplicación usando uno o más métodos de inicio de sesión, incluido el inicio de sesión con dirección de correo electrónico y contraseña, y proveedores de identidad federados, como el inicio de sesión con Google y el inicio de sesión con Facebook. Este tutorial lo ayuda a comenzar con la autenticación de Firebase mostrándole cómo agregar una dirección de correo electrónico y una contraseña de inicio de sesión a su aplicación.

Conecte su proyecto C++ a Firebase

Antes de poder utilizar Firebase Authentication , debes:

  • Registre su proyecto C++ y configúrelo para usar Firebase.

    Si su proyecto de C++ ya usa Firebase, entonces ya está registrado y configurado para Firebase.

  • Agrega el SDK de Firebase C++ a tu proyecto de C++.

Tenga en cuenta que agregar Firebase a su proyecto de C++ implica tareas tanto en Firebase console como en su proyecto de C++ abierto (por ejemplo, descarga archivos de configuración de Firebase desde la consola y luego los mueve a su proyecto de C++).

Registrar nuevos usuarios

Cree un formulario que permita a nuevos usuarios registrarse en su aplicación utilizando su dirección de correo electrónico y una contraseña. Cuando un usuario complete el formulario, valide la dirección de correo electrónico y la contraseña proporcionadas por el usuario, luego páselas al método CreateUserWithEmailAndPassword :

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

Puedes verificar el estado de la operación de creación de cuenta registrando una devolución de llamada en el objeto CreateUserWithEmailAndPasswordLastResult Future o, si estás escribiendo un juego o aplicación con algún tipo de ciclo de actualización periódica, sondeando el estado en el ciclo de actualización.

Por ejemplo, usando un futuro:

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);

O, para usar el sondeo, haz algo como el siguiente ejemplo en el ciclo de actualización de tu juego:

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());
  }
}

Iniciar sesión usuarios existentes

Cree un formulario que permita a los usuarios existentes iniciar sesión con su dirección de correo electrónico y contraseña. Cuando un usuario completa el formulario, llame al método SignInWithEmailAndPassword :

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

Obtenga el resultado de la operación de inicio de sesión de la misma manera que obtuvo el resultado del registro.

Establecer un detector de estado de autenticación y obtener datos de la cuenta

Para responder a eventos de inicio y cierre de sesión, adjunte un detector al objeto de autenticación global. Se llama a este oyente cada vez que cambia el estado de inicio de sesión del usuario. Debido a que el escucha se ejecuta solo después de que el objeto de autenticación se haya inicializado por completo y después de que se hayan completado todas las llamadas de red, es el mejor lugar para obtener información sobre el usuario que ha iniciado sesión.

Cree el oyente implementando la clase abstracta firebase::auth::AuthStateListener . Por ejemplo, para crear un oyente que obtenga información sobre el usuario cuando éste inicia sesión correctamente:

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");
    }
    // ...
  }
};

Adjunte el oyente con el método AddAuthStateListener del objeto firebase::auth::Auth :

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

Próximos pasos

Aprenda cómo agregar soporte para otros proveedores de identidad y cuentas de invitados anónimos: