Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Introducción a la autenticación de Firebase en C++

Puede usar Firebase Authentication para permitir que los usuarios inicien sesión en su aplicación mediante 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 de Google y el inicio de sesión de Facebook. Este tutorial lo inicia con Firebase Authentication al mostrarle cómo agregar una dirección de correo electrónico y una contraseña para iniciar sesión en su aplicación.

Conecta tu proyecto de C++ a Firebase

Antes de poder usar la autenticación de Firebase , debe hacer lo siguiente:

  • 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 la consola de Firebase 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 los 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::User*> result =
    auth->CreateUserWithEmailAndPassword(email, password);

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

Por ejemplo, usando un futuro:

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

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::User*>& 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::User*> result =
    auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::User* user = *result.result();
    printf("Create user succeeded for email %s\n", user->email().c_str());
  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

Iniciar sesión de 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 complete el formulario, llame al método SignInWithEmailAndPassword :

firebase::Future<firebase::auth::User*> 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.

Establezca un oyente de estado de autenticación y obtenga datos de la cuenta

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

Crea el oyente implementando la clase abstracta firebase::auth::AuthStateListener . Por ejemplo, para crear un agente de escucha que obtenga información sobre el usuario cuando un usuario 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 != nullptr) {
      // 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 a agregar soporte para otros proveedores de identidad y cuentas de invitados anónimos: