Migra tu app para Android 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.

Para agregar el acceso con el número teléfono mediante Firebase Authentication a tu app, realiza una de las siguientes acciones:

  • Si deseas una solución directa con IU, instala FirebaseUI y reemplaza la actividad que muestra tu DigitsAuthButton con la actividad AuthUI de FirebaseUI. Por ejemplo:
    startActivityForResult(
        AuthUI.getInstance()
            .createSignInIntentBuilder()
            .setProviders(Arrays.asList(
                new AuthUI.IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER).build(),
                // Other providers you want to support
                // ...
            ))
            .build(),
        RC_SIGN_IN);
    
    Esta es la forma más sencilla de agregar Firebase Authentication a tu app.
  • Si no deseas utilizar FirebaseUI y prefieres crear tu propia IU o integrar con una IU de acceso existente, configura el SDK de Firebase para utilizar el acceso con el número telefónico y realiza los cambios siguientes en tu código de Digits:

    • En el diseño de tu actividad, reemplaza el elemento com.digits.sdk.android.DigitsAuthButton con un elemento Button o ImageButton estándar.
    • Reemplaza la lógica en AuthCallback con el código equivalente en PhoneAuthProvider.OnVerificationStateChangedCallbacks.
    • En el agente de escucha onClick del botón de acceso de tu teléfono, reemplaza la llamada a Digits.authenticate por una llamada a verifyPhoneNumber, como se muestra en el ejemplo siguiente:
      PhoneAuthProvider.getInstance().verifyPhoneNumber(
          phoneNumber,        // Phone number to verify
          60,                 // Timeout duration
          TimeUnit.SECONDS,   // Unit of timeout
          mCallbacks);        // OnVerificationStateChangedCallbacks
      

Después de reemplazar Digits por Firebase, quita el SDK de Digits de tu archivo build.gradle.

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 la dependencia para Digits Migration Helper a tu archivo build.gradle de nivel de módulo:
    compile 'com.google.firebase:firebase-auth:11.8.0'
    compile 'com.firebase:digitsmigrationhelpers:0.1.1'
    
  2. Asegúrate de que tu archivo AndroidManifest.xml contenga tus claves de Fabric y Digits:
    <!--You may already have io.fabric.ApiKey entry. Continue using it -->
    <meta-data
        android:name="io.fabric.ApiKey"
        android:value="@string/FABRIC_API_KEY"
        tools:replace="android:value"/>
    <meta-data
        android:name="com.digits.sdk.android.ConsumerKey"
        android:value="@string/CONSUMER_KEY"/>
    <meta-data
        android:name="com.digits.sdk.android.ConsumerSecret"
        android:value="@string/CONSUMER_SECRET"/>
    
  3. En el método onCreate de tu aplicación o de tu actividad principal, comprueba si hay una sesión de Digits activa y, si la hay, conviértela a una sesión de Firebase mediante una llamada a AuthMigrator.migrate. Por ejemplo:
    AuthMigrator.getInstance().migrate().addOnSuccessListener(this,
            new OnSuccessListener() {
                @Override
                public void onSuccess(Void authResult) {
                    FirebaseUser u = FirebaseAuth.getInstance().getCurrentUser();
                    if (u != null) {
                        // Either a user was already logged in or token exchange succeeded
                        Log.d("MyApp", "Digits id preserved:" + u.getUid());
                        Log.d("MyApp", "Digits phone number preserved: " + u.getPhoneNumber());
                    } else {
                        // No tokens were found to exchange and no Firebase user logged in.
                    }
                }
            }).addOnFailureListener(this,
            new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    // Error migrating Digits token
                }
            });
    
    Si la llamada se completa correctamente, la sesión de Digits se convierte en una sesión de Firebase y la sesión original de Digits se borra.
  4. Opcional: Registra si la sesión de Digits se migró y omite condicionalmente el paso anterior si ya se llevó a cabo.

Enviar comentarios sobre...

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