Cómo autenticar con Firebase de forma anónima en iOS

Puedes usar Firebase Authentication para crear y usar cuentas anónimas temporales para 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 iOS.
  2. Incluye los siguientes pods en tu Podfile:
    pod 'Firebase/Auth'
    
  3. Si aún no conectaste tu 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, sigue estos pasos para que el usuario acceda de forma anónima:

  1. Importa el módulo de Firebase en tu UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  2. Configura una instancia compartida de FirebaseApp, generalmente en el método application:didFinishLaunchingWithOptions: de tu aplicación:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  3. Llama al método signInAnonymouslyWithCompletion::

    Swift

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

    Objective-C

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

    Swift

    let user = authResult.user
    let isAnonymous = user.isAnonymous  // true
    let uid = user.uid
    

    Objective-C

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

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 del proveedor de autenticación hasta el paso anterior a la llamada a uno de los métodos FIRAuth.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 FIRAuthCredential para el proveedor de autenticación nuevo:

    Acceso con Google
    Swift
    guard let authentication = user.authentication else { return }
    let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken,
                                                      accessToken: authentication.accessToken)
    
    Objective-C
    GIDAuthentication *authentication = user.authentication;
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken
                                     accessToken:authentication.accessToken];
    
    Acceso con Facebook
    Swift
    let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)
    
    Objective-C
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
    Acceso con correo electrónico y contraseña
    Swift
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    
    Objective-C
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
    
  3. Pasa el objeto FIRAuthCredential al método linkWithCredential:completion: del usuario que accedió:

    Swift
        user.linkAndRetrieveData(with: credential) { (authResult, error) in
      // ...
    }
    }
    
    Objective-C
        [[FIRAuth auth].currentUser linkAndRetrieveDataWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];
    

Si la llamada a linkWithCredential:completion: se realiza correctamente, la nueva cuenta del usuario puede acceder a los datos de Firebase de la cuenta anónima.

Pasos siguientes

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.

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.