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 de forma anónima en plataformas Apple

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

Puede usar Firebase Authentication para crear y usar cuentas anónimas temporales para autenticarse con Firebase. Estas cuentas anónimas temporales se pueden usar para permitir que los usuarios que aún no se hayan registrado en su aplicación trabajen con datos protegidos por reglas de seguridad. Si un usuario anónimo decide registrarse en su aplicación, puede vincular sus credenciales de inicio de sesión a la cuenta anónima para que pueda continuar trabajando con sus datos protegidos en sesiones futuras.

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. Si aún no ha conectado su aplicación a su proyecto de Firebase, hágalo desde la consola de Firebase .
  2. Habilitar autenticación anónima:
    1. En Firebase console , abra la sección Auth .
    2. En la página Métodos de inicio de sesión , habilite el método de inicio de sesión anónimo .
    3. Opcional : habilite la limpieza automática. Cuando habilita esta configuración, las cuentas anónimas que tengan más de 30 días se eliminarán automáticamente. En proyectos con la limpieza automática habilitada, la autenticación anónima ya no contará para los límites de uso o las cuotas de facturación. Consulte Limpieza automática .

Autenticarse con Firebase de forma anónima

Cuando un usuario que no ha iniciado sesión usa una función de la aplicación que requiere autenticación con Firebase, inicie sesión de forma anónima mediante los siguientes pasos:

  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. Llame al método signInAnonymouslyWithCompletion: :

    Rápido

    Auth.auth().signInAnonymously { authResult, error in
      // ...
    }
    

    C objetivo

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
    
  4. Si el método signInAnonymouslyWithCompletion: se completa sin errores, puede obtener los datos de la cuenta del usuario anónimo del objeto FIRAuthDataResult :

    Rápido

    guard let user = authResult?.user else { return }
    let isAnonymous = user.isAnonymous  // true
    let uid = user.uid
    

    C objetivo

    FIRUser *user = authResult.user;
    BOOL isAnonymous = user.anonymous;  // YES
    NSString *uid = user.uid;
    

Convertir una cuenta anónima en una cuenta permanente

Cuando un usuario anónimo se registra en su aplicación, es posible que desee permitirle continuar su trabajo con su nueva cuenta; por ejemplo, es posible que desee que los elementos que el usuario agregó a su carrito de compras antes de registrarse estén disponibles en su nueva cuenta. carrito de compras de la cuenta. Para hacerlo, complete los siguientes pasos:

  1. Cuando el usuario se registre, complete el flujo de inicio de sesión para el proveedor de autenticación del usuario hasta, pero sin incluir, llamar a uno de los métodos FIRAuth.signInWith . Por ejemplo, obtenga el token de ID de Google del usuario, el token de acceso de Facebook o la dirección de correo electrónico y la contraseña.
  2. Obtenga una FIRAuthCredential para el nuevo proveedor de autenticación:

    Inicio de sesión de Google
    Rápido
    guard
      let authentication = user?.authentication,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: idToken,
                                                   accessToken: authentication.accessToken)
    
    C objetivo
    GIDAuthentication *authentication = user.authentication;
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken
                                     accessToken:authentication.accessToken];
    
    Inicio de sesión en Facebook
    Rápido
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    
    C objetivo
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
    Inicio de sesión con contraseña de correo electrónico
    Rápido
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    
    C objetivo
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
    
  3. Pase el objeto FIRAuthCredential al método linkWithCredential:completion: del usuario de inicio de sesión:

    Rápido
        user.link(with: credential) { authResult, error in
      // ...
    }
    }
    
    C objetivo
        [[FIRAuth auth].currentUser linkWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];
    

Si la llamada a linkWithCredential:completion: tiene éxito, la nueva cuenta del usuario puede acceder a los datos de Firebase de la cuenta anónima.

limpieza automática

Cuando habilita la limpieza automática en la consola de Firebase, las cuentas anónimas que tengan más de 30 días se eliminarán automáticamente. Habilitar esta configuración evita que su base de datos de usuarios se llene con cuentas no utilizadas. En proyectos con la limpieza automática habilitada, la autenticación anónima no contará para los límites de uso o las cuotas de facturación.

  • Cualquier cuenta anónima creada después de habilitar la limpieza automática se eliminará 30 días después de la creación.
  • Las cuentas anónimas creadas antes de habilitar la limpieza automática se eliminarán alrededor de 30 días después de habilitar la limpieza automática.
  • Si desactiva la limpieza automática, todas las cuentas anónimas programadas para ser eliminadas permanecerán programadas para ser eliminadas.
  • Si "actualiza" una cuenta anónima vinculándola a cualquier método de inicio de sesión, la cuenta no se eliminará automáticamente.

Si desea ver cuántos usuarios se verán afectados antes de habilitar esta función y actualizó su proyecto a Firebase Authentication con Identity Platform , puede filtrar por is_anon en Cloud Logging .

Próximos pasos

Ahora que los usuarios pueden autenticarse con Firebase, puede controlar su acceso a los datos en su base de datos de Firebase mediante las reglas de Firebase.