Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Autenticarse con Firebase en plataformas Apple mediante un sistema de autenticación personalizado

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.
Puede integrar Firebase Authentication con un sistema de autenticación personalizado modificando su servidor de autenticación para producir tokens firmados personalizados cuando un usuario inicia sesión correctamente. Su aplicación recibe este token y lo usa para autenticarse con Firebase.

Antes de que empieces

Use Swift Package Manager para instalar y administrar las dependencias de Firebase.

  1. En Xcode, con su proyecto de aplicación abierto, vaya a Archivo > Agregar paquetes .
  2. Cuando se le solicite, agregue el repositorio del SDK de las plataformas Apple de Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Elija la biblioteca de autenticación de Firebase.
  5. Cuando termine, Xcode comenzará a resolver y descargar automáticamente sus dependencias en segundo plano.

A continuación, realice algunos pasos de configuración:

  1. Obtenga las claves del servidor de su proyecto:
    1. Vaya a la página Cuentas de servicio en la configuración de su proyecto.
    2. Haga clic en Generar nueva clave privada en la parte inferior de la sección Firebase Admin SDK de la página Cuentas de servicio .
    3. El par de claves pública/privada de la nueva cuenta de servicio se guarda automáticamente en su computadora. Copie este archivo en su servidor de autenticación.

Autenticar con Firebase

  1. Importe el módulo FirebaseCore en su UIApplicationDelegate , así como cualquier otro módulo de Firebase que use el delegado de su aplicación. Por ejemplo, para usar Cloud Firestore y autenticación:

    Rápido

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    C objetivo

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Configure una instancia compartida de FirebaseApp en el método application(_:didFinishLaunchingWithOptions:) del delegado de su aplicación:

    Rápido

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    C objetivo

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Cuando los usuarios inicien sesión en su aplicación, envíe sus credenciales de inicio de sesión (por ejemplo, su nombre de usuario y contraseña) a su servidor de autenticación. Su servidor verifica las credenciales y devuelve un token personalizado si son válidos.
  4. Después de recibir el token personalizado de su servidor de autenticación, páselo a signInWithCustomToken para iniciar la sesión del usuario:

    Rápido

    Auth.auth().signIn(withCustomToken: customToken ?? "") { user, error in
      // ...
    }

    C objetivo

    [[FIRAuth auth] signInWithCustomToken:customToken
                               completion:^(FIRAuthDataResult * _Nullable authResult,
                                            NSError * _Nullable error) {
      // ...
    }];

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 .