Ir a la consola

Autentica con Firebase de forma anónima con C++

Puedes usar Firebase Authentication para crear y usar cuentas anónimas temporales a fin de autenticar con Firebase. Estas cuentas se pueden usar para permitir que los usuarios que aún no se registraron en la app trabajen con datos protegidos mediante reglas de seguridad. Si un usuario anónimo decide registrarse para usar la app, puedes vincular sus credenciales de acceso con la cuenta anónima, de manera que pueda continuar usando sus datos protegidos en sesiones futuras.

Antes de comenzar

  1. Agrega Firebase a tu proyecto de C++.
  2. En el archivo build.gradle de nivel de proyecto, asegúrate de incluir el repositorio Maven de Google en las secciones buildscript y allprojects.
  3. Si aún no conectas la app al proyecto de Firebase, puedes hacerlo desde Firebase console.
  4. Habilita la autenticación anónima:
    1. En Firebase console, abre la sección Auth.
    2. En la página Métodos de acceso, habilita el método de acceso Anónimo.

Autentica en Firebase de forma anónima

Cuando un usuario que no accedió a su cuenta usa una función de la app que requiere autenticación en Firebase, haz que el usuario acceda de forma anónima mediante los siguientes pasos:

La clase Auth es la puerta de enlace para todas las llamadas de la API.
  1. Agrega los archivos de encabezados de autenticación y de app:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. En tu código de inicialización, crea una clase firebase::App.
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. Obtén la clase firebase::auth::Auth para tu firebase::App. Existe una asignación uno a uno entre App y Auth.
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Llama a Auth::SignInAnonymously.
    firebase::Future<firebase::auth::User*> result = auth->SignInAnonymously();
    
  • Si tu programa tiene un bucle de actualización que se ejecuta de manera regular (por ejemplo, 30 o 60 veces por segundo), puedes verificar los resultados una vez por actualización con Auth::SignInAnonymouslyLastResult:
    firebase::Future<firebase::auth::User*> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::User* user = *result.result();
        printf("Sign in succeeded for `%s`\n", user->display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    Si tu programa es controlado por eventos, te recomendamos que registres una devolución de llamada en Future.
  • Convierte una cuenta anónima en una permanente

    Cuando un usuario anónimo se registra en la app, tal vez sea conveniente permitirle que continúe su trabajo con su cuenta nueva. Por ejemplo, puede que desees hacer que los elementos que el usuario agregó a su carrito de compras antes de registrarse estén disponibles en el carrito de compras de su cuenta nueva. Para ello, completa los siguientes pasos:

    1. Cuando el usuario se registre, completa el flujo de acceso para el proveedor de autenticación del usuario hasta el paso anterior a llamar a uno de los métodos Auth::SignInWith. Por ejemplo, obtén el token del ID de Google, el token de acceso a Facebook o la dirección de correo electrónico y la contraseña del usuario.
    2. Obtén una auth::Credential para el proveedor de autenticación nuevo:

      Acceso con Google
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      Acceso con Facebook
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      Acceso con correo electrónico y contraseña
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. Pasa el objeto auth::Credential al método LinkWithCredential del usuario que accedió:

      // Link the new credential to the currently active user.
      firebase::auth::User* current_user = auth->current_user();
      firebase::Future<firebase::auth::User*> result =
          current_user->LinkWithCredential(credential);
      

    Si la llamada a LinkWithCredential se hace correctamente, la nueva cuenta del usuario puede acceder a los datos de Firebase de la cuenta anónima.

    Próximos pasos

    Ahora que los usuarios pueden autenticar con Firebase, puedes controlar su acceso a la información de tu base de datos con las reglas de Firebase.