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

Autenticar usando Yahoo en plataformas Apple

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 en su aplicación usando el SDK de Firebase para llevar a cabo el flujo de inicio de sesión de extremo a extremo.

Antes de que empieces

Para que los usuarios inicien sesión con cuentas de Yahoo, primero debe habilitar Yahoo como proveedor de inicio de sesión para su proyecto de Firebase:

  1. Agregue Firebase a su proyecto de Apple .
  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 .

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 las plataformas Apple de Firebase, siga estos pasos:

  1. Agregue esquemas de URL personalizados a su proyecto Xcode:

    1. Abra la configuración de su proyecto: haga doble clic en el nombre del proyecto en la vista de árbol de la izquierda. Seleccione su aplicación en la sección OBJETIVOS , luego seleccione la pestaña Información y expanda la sección Tipos de URL .
    2. Haga clic en el botón + y agregue un esquema de URL para su ID de cliente invertida. Para encontrar este valor, abra el archivo de configuración GoogleService-Info.plist y busque la clave REVERSED_CLIENT_ID . Copie el valor de esa clave y péguelo en el cuadro Esquemas de URL en la página de configuración. Deje los otros campos en blanco.

      Cuando se complete, su configuración debería verse similar a la siguiente (pero con los valores específicos de su aplicación):

  2. Cree una instancia de OAuthProvider con el ID de proveedor yahoo.com .

    Rápido

    var provider = OAuthProvider(providerID: "yahoo.com")
        

    C objetivo

    FIROAuthProvider *provider = [FIROAuthProvider providerWithProviderID:@"yahoo.com"];
        
  3. Opcional : especifique parámetros de OAuth personalizados adicionales que desee enviar con la solicitud de OAuth.

    Rápido

    provider.customParameters = [
    "prompt": "login",
    "language": "fr"
    ]
        

    C objetivo

    [provider setCustomParameters:@{@"prompt": @"login", @"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 setCustomParameters . Estos parámetros son client_id , redirect_uri , response_type , scope y state .

  4. 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.

    Rápido

    // Request access to Yahoo Mail API.
    // Request read/write access to user contacts.
    // This must be preconfigured in the app's API permissions.
    provider.scopes = ["mail-r", "sdct-w"]
        

    C objetivo

    // Request access to Yahoo Mail API.
    // Request read/write access to user contacts.
    // This must be preconfigured in the app's API permissions.
    [provider setScopes:@[@"mail-r", @"sdct-w"]];
        

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

  5. Opcional : si desea personalizar la forma en que su aplicación presenta SFSafariViewController o UIWebView cuando muestra el reCAPTCHA al usuario, cree una clase personalizada que se ajuste al protocolo FIRAuthUIDelegate y pásela a getCredentialWithUIDelegate:completion: .

  6. Autenticarse con Firebase mediante el objeto del proveedor de OAuth.

    Rápido

    provider.getCredentialWith(nil) { credential, error in
    if error != nil {
    // Handle error.
    }
    if credential != nil {
    Auth().signIn(with: credential) { authResult, error in
      if error != nil {
        // Handle error.
      }
      // User is signed in.
      // IdP data available in authResult.additionalUserInfo.profile.
      // Yahoo OAuth access token can also be retrieved by:
      // (authResult.credential as? OAuthCredential)?.accessToken
      // Yahoo OAuth ID token can be retrieved by calling:
      // (authResult.credential as? OAuthCredential)?.idToken
    }
    }
    }
        

    C objetivo

    [provider getCredentialWithUIDelegate:nil
                           completion:^(FIRAuthCredential *_Nullable credential, NSError *_Nullable error) {
    if (error) {
    // Handle error.
    }
    if (credential) {
    [[FIRAuth auth] signInWithCredential:credential
                              completion:^(FIRAuthDataResult *_Nullable authResult, NSError *_Nullable error) {
      if (error) {
        // Handle error.
      }
      // User is signed in.
      // IdP data available in authResult.additionalUserInfo.profile.
      // Yahoo OAuth access token can also be retrieved by:
      // ((FIROAuthCredential *)authResult.credential).accessToken
      // Yahoo OAuth ID token can be retrieved by calling:
      // ((FIROAuthCredential *)authResult.credential).idToken
    }];
    }
    }];
        

    Con el token de acceso de OAuth, puede llamar a la API de Yahoo .

    Por ejemplo, para obtener información básica del perfil, puede llamar a la API REST y pasar el token de acceso en el encabezado de Authorization :

    https://social.yahooapis.com/v1/user/YAHOO_USER_UID/profile?format=json
    

    Donde YAHOO_USER_UID es la ID del usuario de Yahoo que se puede recuperar del Auth.auth.currentUser.providerData[0].uid o de authResult.additionalUserInfo.profile .

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

    Rápido

    Auth().currentUser.link(withCredential: credential) { authResult, error in
    if error != nil {
    // Handle error.
    }
    // Yahoo credential is linked to the current user.
    // IdP data available in authResult.additionalUserInfo.profile.
    // Yahoo OAuth access token can also be retrieved by:
    // (authResult.credential as? OAuthCredential)?.accessToken
    // Yahoo OAuth ID token can be retrieved by calling:
    // (authResult.credential as? OAuthCredential)?.idToken
    }
        

    C objetivo

    [[FIRAuth auth].currentUser
    linkWithCredential:credential
            completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
    if (error) {
    // Handle error.
    }
    // Yahoo credential is linked to the current user.
    // IdP data available in authResult.additionalUserInfo.profile.
    // Yahoo OAuth access token is can also be retrieved by:
    // ((FIROAuthCredential *)authResult.credential).accessToken
    // Yahoo OAuth ID token can be retrieved by calling:
    // ((FIROAuthCredential *)authResult.credential).idToken
    }];
        
  8. El mismo patrón se puede usar con reauthenticateWithPopup / reauthenticateWithRedirect , que se puede usar para recuperar credenciales nuevas para operaciones confidenciales que requieren un inicio de sesión reciente.

    Rápido

    Auth().currentUser.reauthenticateWithCredential(withCredential: credential) { authResult, error in
    if error != nil {
    // Handle error.
    }
    // User is re-authenticated with fresh tokens minted and
    // should be able to perform sensitive operations like account
    // deletion and email or password update.
    // IdP data available in result.additionalUserInfo.profile.
    // Additional OAuth access token is can also be retrieved by:
    // (authResult.credential as? OAuthCredential)?.accessToken
    // Yahoo OAuth ID token can be retrieved by calling:
    // (authResult.credential as? OAuthCredential)?.idToken
    }
        

    C objetivo

    [[FIRAuth auth].currentUser
    reauthenticateWithCredential:credential
                      completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
    if (error) {
    // Handle error.
    }
    // User is re-authenticated with fresh tokens minted and
    // should be able to perform sensitive operations like account
    // deletion and email or password update.
    // IdP data available in result.additionalUserInfo.profile.
    // Additional OAuth access token is can also be retrieved by:
    // ((FIROAuthCredential *)authResult.credential).accessToken
    // Yahoo OAuth ID token can be retrieved by calling:
    // ((FIROAuthCredential *)authResult.credential).idToken
    }];
        

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 FIRUser . Consulte Administrar usuarios .

  • 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 signOut: .

Rápido

    let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}
  

C objetivo

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

También es posible que desee agregar un código de manejo de errores para la gama completa de errores de autenticación. Consulte Manejo de errores .