Ir a la consola

Migra tu app para iOS de Digits a Firebase

Si usas Digits para el acceso de usuarios con sus números telefónicos, deberías migrar tu app a Firebase Authentication. Toda la programación futura de la función de acceso con el número telefónico aparecerá en Firebase y Digits dejará de funcionar el 30 de septiembre de 2017.

Sigue estos pasos para migrar tu app de Digits a Firebase sin afectar a tus usuarios actuales de Digits.

Información general

Para migrar tu app de Digits a Firebase Authentication, sigue estos pasos:

  1. Migra las cuentas de usuario de Digits a Firebase.
  2. Reemplaza el SDK de Digits por el SDK de Firebase.
  3. Migra las sesiones activas de Digits a Firebase.

El primer paso se puede completar de inmediato sin afectar a tu app ni a los usuarios existentes. Los otros pasos se deben completar al mismo tiempo.

Migra las cuentas de usuario de Digits a Firebase

Primero, migra las cuentas de usuario de Digits a Firebase como se describe en los documentos de programador de Fabric.

Después de completar los pasos para la migración de cuentas, espera un par de horas a que las cuentas de usuario de Digits se transfieran a tu proyecto de Firebase. Cuando la migración se complete, tendrás un proyecto de Firebase que contiene todas las cuentas de usuario de Digits. Además, todas las cuentas de Digits que se creen después de habilitar la migración se migrarán a Firebase automáticamente.

Reemplaza el SDK de Digits por el SDK de Firebase

A continuación, en la app, reemplaza las llamadas al SDK de Digits por llamadas al SDK de Firebase.

Si utilizas el botón de acceso de Digits DGTAuthenticateButton preconfigurado, puedes cambiar a Firebase realizando una de las siguientes acciones:

  • Instala FirebaseUI y reemplaza la vista superior de DGTAuthenticateButton por el authViewController de FirebaseUI.
  • Configura el SDK de Firebase para usar el acceso con el número telefónico. Luego, reemplaza DGTAuthenticateButton por un UIButton. Cuando el usuario presione el botón UIButton, llama a verifyPhoneNumber:completion:.

Si utilizas un botón personalizado que llame al método authenticateWithCompletion: del SDK de Digits, configura el SDK de Firebase para usar el acceso con el número de teléfono. Luego, reemplaza la llamada a authenticateWithCompletion: por el método verifyPhoneNumber:completion: del SDK de Firebase.

Después de reemplazar Digits por Firebase, quita el SDK de Digits de tu Podfile y de la configuración de compilación.

Migra las sesiones activas de Digits a Firebase

Por último, migra las sesiones de usuario activas de Digits a Firebase para que tus usuarios no tengan que acceder nuevamente después de que implementes tu app actualizada.

Para migrar tus sesiones de Digits a las sesiones de Firebase, utiliza el SDK de Digits Migration Helper para generar un token de autenticación de Firebase desde la sesión activa de Digits. A continuación, utiliza el token para acceder con Firebase. Por último, después de acceder con éxito utilizando Firebase, borra la sesión de Digits.

  1. Agrega el SDK de Digits Migration Helper a tu Podfile:
    pod 'DigitsMigrationHelper'
    A continuación, ejecuta el comando pod install.
  2. Cuando cargue tu app, comprueba si hay una sesión de Digits activa y, si existe, conviértela en una sesión de Firebase. Luego, borra la sesión de Digits por medio de clearLegacyAuth:. Por ejemplo:

    Swift

    let migrator = DigitsMigrator.init(digitsAppConsumerKey: key as! String, withDigitsAppConsumerSecret: secret as! String)
    
    migrator.getLegacyAuth { (customSignInToken, session) in
      if let customSignInToken = customSignInToken {
        print("Legacy digits session detected: token=\(customSignInToken), session=\(DigitsSession.describe(session))")
    
        Auth.auth().signIn(withCustomToken: customSignInToken) { (user, error) in
          if let error = error {
            print("signInWithCustomToken, user=\(String(describing: user)), error=\(error)")
            return
          }
    
          migrator.clearLegacyAuth { (success, error) in
            print("clearLegacyAuth, success=\(success), error=\(error?.localizedDescription ?? "")")
          }
        }
      }
    }

    Objective-C

    FIRDigitsMigrator *migrator = [[FIRDigitsMigrator alloc] initWithDigitsAppConsumerKey:key
                                                              withDigitsAppConsumerSecret:secret];
    
    [migrator getLegacyAuth:^(NSString *customSignInToken, FIRDigitsSession *session){
      if (customSignInToken) {
        NSLog(@"Legacy digits session detected: token=%@, session=%@", customSignInToken, [FIRDigitsSession describe:session]);
    
        [[FIRAuth auth] signInWithCustomToken:customSignInToken
                                   completion:^(FIRUser * _Nullable user, NSError * _Nullable error) {
          NSLog(@"signInWithCustomToken, user=%@, error=%@", user, error);
          if (!error) {
            NSString *msg = [NSString stringWithFormat:@"Converted to firebase user with id as %@", user.uid];
    
            [migrator clearLegacyAuth:^(BOOL success, NSError * _Nullable error){
              NSLog(@"clearLegacyAuth, success=%d, error=%@", success, error);
            }];
          }
        }];
      } else {
        NSLog(@"No legacy digits session detected");
        // ...
      }
    }];

    Puedes realizar esta conversión donde resulte conveniente para tu app; con frecuencia, esto se hace en tu AppDelegate.

    Si getLegacyAuth: no produce un token personalizado, el usuario no accedió con Digits y puedes continuar el acceso con Firebase.

  3. Opcional: Registra si la sesión de Digits se migró y omite condicionalmente el paso anterior si ya se llevó a cabo.