Primeros pasos con Firebase Authentication en C++

Puedes usar Firebase Authentication para permitir que los usuarios accedan a tu app con uno o más métodos de acceso, que incluyen el acceso con dirección de correo electrónico y contraseña, y proveedores de identidad federada, como Acceso con Google y Acceso con Facebook. Este instructivo te muestra cómo agregar un acceso con dirección de correo electrónico y contraseña a tu app para comenzar con Firebase Authentication.

Conecta tu app a Firebase

Instala el SDK de Firebase.

Registra usuarios nuevos

Crea un formulario que permita a los usuarios nuevos registrarse en tu app mediante su dirección de correo electrónico y una contraseña. Cuando un usuario complete el formulario, valida la dirección de correo electrónico y la contraseña que proporcionó el usuario para después pasarlas al método CreateUserWithEmailAndPassword:

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

Puedes verificar el estado de la operación de creación de cuenta mediante el registro de una devolución de llamada en el objeto Future CreateUserWithEmailAndPasswordLastResult o, si estás escribiendo un juego o una app con algún tipo de bucle de actualización periódica, mediante un sondeo del estado en el bucle de actualización.

Por ejemplo, si usas un Future:

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

Como alternativa, para usar el sondeo, haz algo como el siguiente ejemplo en el bucle de actualización del 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());
  }
}

Acceso de usuarios existentes

Crea un formulario que les permita a los usuarios existentes acceder con su dirección de correo electrónico y una contraseña. Cuando un usuario complete el formulario, llama al método SignInWithEmailAndPassword:

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

Obtén el resultado de la operación de acceso de la misma forma que obtuviste el resultado del acceso.

Configura un agente de escucha del estado de autenticación y obtén datos de la cuenta

Para responder a eventos de acceso y cierre de sesión, adjunta un agente de escucha al objeto de autenticación global. Se llamará a este agente de escucha cada vez que cambie el estado de acceso del usuario. Debido a que el agente de escucha se ejecuta solo después de que el objeto de autenticación se inicializa por completo y después de que se completan todas las llamadas de la red, es el mejor lugar para obtener información acerca del usuario que accedió.

Para crear el agente de escucha, implementa la clase abstracta firebase::auth::AuthStateListener. Por ejemplo, para crear un agente de escucha que obtiene información sobre el usuario cuando un usuario accede correctamente, haz lo siguiente:

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

Adjunta el agente de escucha con el método AddAuthStateListener del objeto firebase::auth::Auth:

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

Pasos siguientes

Obtén información sobre cómo admitir otros proveedores de identidad y cuentas de invitado anónimas:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.