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

Autenticar usando Yahoo y C++

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Puede permitir que sus usuarios se autentiquen con Firebase usando proveedores de OAuth como Yahoo integrando el inicio de sesión OAuth genérico basado en la web en su aplicación usando el SDK de Firebase para llevar a cabo el flujo de inicio de sesión de extremo a extremo. Dado que este flujo requiere el uso de los SDK de Firebase basados ​​en teléfonos, solo es compatible con las plataformas Android y Apple.

Antes de que empieces

  1. Agregue Firebase a su proyecto de C++ .
  2. En Firebase console , abra la sección Auth .
  3. En la pestaña Método de inicio de sesión , habilite el proveedor de Yahoo .
  4. Agregue el ID de cliente y el secreto de cliente de la consola de desarrollador de ese proveedor a la configuración del proveedor:
    1. Para registrar un cliente de Yahoo OAuth, siga la documentación para desarrolladores de Yahoo sobre el registro de una aplicación web con Yahoo .

      Asegúrese de seleccionar los dos permisos de API de OpenID Connect: profile y email .

    2. Al registrar aplicaciones con estos proveedores, asegúrese de registrar el dominio *.firebaseapp.com para su proyecto como dominio de redireccionamiento para su aplicación.
  5. Haga clic en Guardar .

Accede a la firebase::auth::Auth

La clase Auth es la puerta de enlace para todas las llamadas a la API.
  1. Agregue los archivos de encabezado Auth y App:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. En su código de inicialización, cree 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. Adquiera la firebase::auth::Auth para su firebase::App . Hay una asignación uno a uno entre App y Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    

Manejar el flujo de inicio de sesión con el SDK de Firebase

Para manejar el flujo de inicio de sesión con el SDK de Firebase, sigue estos pasos:

  1. Cree una instancia de FederatedOAuthProviderData configurada con el ID de proveedor apropiado para Yahoo.

    firebase::auth::FederatedOAuthProviderData
        provider_data(firebase::auth::YahooAuthProvider::kProviderId);
    
  2. Opcional : especifique parámetros de OAuth personalizados adicionales que desee enviar con la solicitud de OAuth.

    // Prompt user to re-authenticate to Yahoo.
    provider_data.custom_parameters["prompt"] = "login";
    
    // Localize to French.
    provider_data.custom_parameters["language"] = "fr";
    

    Para conocer los parámetros compatibles con Yahoo, consulte la documentación de Yahoo OAuth . Tenga en cuenta que no puede pasar parámetros requeridos por Firebase con custom_parameters() . Estos parámetros son client_id , redirect_uri , response_type , scope y state .

  3. Opcional : especifique ámbitos de OAuth 2.0 adicionales además del profile y el email que desee solicitar al proveedor de autenticación. Si su aplicación requiere acceso a datos de usuario privados de las API de Yahoo, deberá solicitar permisos para las API de Yahoo en Permisos de API en la consola de desarrollador de Yahoo. Los ámbitos de OAuth solicitados deben coincidir exactamente con los preconfigurados en los permisos de la API de la aplicación. Por ejemplo, si se solicita acceso de lectura/escritura a los contactos del usuario y está preconfigurado en los permisos de la API de la aplicación, se debe pasar sdct-w en lugar del alcance de OAuth de solo lectura sdct-r . De lo contrario, el flujo fallará y se mostrará un error al usuario final.

    // Request access to Yahoo Mail API.
    provider_data.scopes.push_back("mail-r");
    // This must be preconfigured in the app's API permissions.
    provider_data.scopes.push_back("sdct-w");
    

    Para obtener más información, consulte la documentación de los ámbitos de Yahoo .

  4. Una vez que haya configurado los datos de su proveedor, utilícelos para crear un FederatedOAuthProvider.

    // Construct a FederatedOAuthProvider for use in Auth methods.
    firebase::auth::FederatedOAuthProvider provider(provider_data);
    
  5. Autenticarse con Firebase mediante el objeto del proveedor de autenticación. Tenga en cuenta que, a diferencia de otras operaciones de FirebaseAuth, esto tomará el control de su interfaz de usuario al mostrar una vista web en la que el usuario puede ingresar sus credenciales.

    Para iniciar el flujo de inicio de sesión, llame a signInWithProvider :

    firebase::Future<firebase::auth::SignInResult> result =
      auth->SignInWithProvider(provider_data);
    

    Su aplicación puede entonces esperar o registrar una devolución de llamada en el futuro .

  6. Si bien los ejemplos anteriores se centran en los flujos de inicio de sesión, también tiene la capacidad de vincular un proveedor de Yahoo a un usuario existente mediante LinkWithProvider . Por ejemplo, puede vincular varios proveedores al mismo usuario, permitiéndoles iniciar sesión con cualquiera de ellos.

    firebase::Future<firebase::auth::SignInResult> result = user->LinkWithProvider(provider_data);
    
  7. El mismo patrón se puede usar con ReauthenticateWithProvider , que se puede usar para recuperar credenciales nuevas para operaciones confidenciales que requieren un inicio de sesión reciente.

    firebase::Future<firebase::auth::SignInResult> result =
      user->ReauthenticateWithProvider(provider_data);
    

    Su aplicación puede entonces esperar o registrar una devolución de llamada en el futuro .

Próximos pasos

Después de que un usuario inicia sesión por primera vez, se crea una nueva cuenta de usuario y se vincula a las credenciales (es decir, el nombre de usuario y la contraseña, el número de teléfono o la información del proveedor de autenticación) con las que el usuario inició sesión. Esta nueva cuenta se almacena como parte de su proyecto de Firebase y se puede usar para identificar a un usuario en cada aplicación de su proyecto, independientemente de cómo inicie sesión el usuario.

  • En sus aplicaciones, puede obtener la información básica del perfil del usuario del objeto firebase::auth::User :

    firebase::auth::User* user = auth->current_user();
    if (user != nullptr) {
      std::string name = user->display_name();
      std::string email = user->email();
      std::string photo_url = user->photo_url();
      // The user's ID, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server,
      // if you have one. Use firebase::auth::User::Token() instead.
      std::string uid = user->uid();
    }
    
  • En sus Reglas de seguridad de Firebase Realtime Database y Cloud Storage, puede obtener el ID de usuario único del usuario que inició sesión de la variable auth y usarlo para controlar a qué datos puede acceder un usuario.

Puede permitir que los usuarios inicien sesión en su aplicación utilizando varios proveedores de autenticación vinculando las credenciales del proveedor de autenticación a una cuenta de usuario existente.

Para cerrar la sesión de un usuario, llame a SignOut() :

auth->SignOut();