La pestaña de autenticación proporciona un flujo de autenticación seguro y simplificado para usar en apps para Android. Cuando creas y lanzas un AuthTabIntent
, puedes invocar una pestaña personalizada especializada diseñada para administrar una experiencia de autenticación de extremo a extremo. La pestaña está simplificada y tiene capacidades limitadas, lo que permite que los usuarios se enfoquen en la tarea en cuestión. Cuando se completa, la pestaña vuelve a llamar a tu aplicación con un resultado que usa HTTPS o esquemas personalizados.


A partir de Chrome 132, la pestaña de autenticación puede reemplazar directamente las integraciones de autenticación de pestañas personalizadas existentes. Para los usuarios cuyos dispositivos no admiten la pestaña de autenticación, el resguardo a las pestañas personalizadas es automático. Para migrar de las pestañas personalizadas a la pestaña de autenticación, puedes modificar algunas líneas de código.
Cómo funciona
Con la pestaña de autenticación, una app cliente inicia una pestaña personalizada especializada que presenta una ventana del navegador que carga una URL con la página de autenticación esperada. Una vez completada, la pestaña de autenticación muestra el resultado de la autenticación mediante una devolución de llamada.
Después de la autenticación, cuando se produce una navegación al URI de redireccionamiento de devolución de llamada proporcionado anteriormente, se captura el redireccionamiento y se muestra a la aplicación cliente mediante la devolución de llamada. En el caso de los redireccionamientos que usan el esquema https, el navegador verifica que el dominio de redireccionamiento y la app cliente sean propiedad del mismo publicador mediante Digital Asset Links.
El cliente recibe el URI navegado con el esquema de redireccionamiento (o, para HTTPS, el host y la ruta de redireccionamiento) con la devolución de llamada proporcionada. Estos datos incluyen un código de resultado y cualquier otro dato que proporcione la interfaz de autenticación. Puedes usar estos datos para verificar la autenticación o controlar situaciones que no se hayan realizado correctamente.
¿Por qué la pestaña Auth?
Antes de la pestaña de autenticación, podías usar un intent de pestañas personalizadas estándar para potenciar los flujos de autenticación. Es preferible usar una pestaña de autenticación porque proporciona seguridad mejorada, una experiencia optimizada y también abstrae algunos de los elementos internos para la autenticación del código del cliente. Por estos motivos, verás que la pestaña de autenticación proporciona una mejor experiencia.
Seguridad mejorada
En una implementación típica de la pestaña personalizada, se requiere un intent para recibir datos de la ventana del navegador que controla la autenticación. Esto requiere código adicional y expone tu app a posibles interferencias en tu intent. Con una pestaña de autenticación, los datos se reciben mediante una devolución de llamada, con transferencia de datos directa entre la API de Android y la app cliente.
Una experiencia optimizada
En una pestaña personalizada, el usuario tiene acceso a funciones adicionales del navegador que podrían no ser deseadas para un flujo de autenticación. Una pestaña de autenticación proporciona una experiencia simplificada que quita la mayoría de las opciones de personalización disponibles en una pestaña personalizada estándar. En el caso de los navegadores Chrome, esto incluye el botón para minimizar, el menú contextual de mantener presionado y la función de buscar con un toque, así como los elementos de menú para Abrir en Chrome, agregar a favoritos, descargar y compartir, y Agregar a la pantalla principal.
Las pestañas de autenticación aún conservan funciones para que el navegador autocomplete contraseñas y pagos guardados anteriormente, navegue hacia atrás o hacia adelante, actualice, muestre información de la página, solicite una versión para computadoras de la página y proporcione una traducción.
Abstracción de datos
Si solo implementas la pestaña de autenticación, no necesitarás un intent para recibir datos del navegador, ni los filtros de intent en AndroidManifest.xml
que se requerían anteriormente para que la autenticación funcionara correctamente. Esto quita la complejidad del cliente. Algunas de estas funciones aún se pueden incluir en el código del cliente para proporcionar compatibilidad con versiones anteriores de las pestañas personalizadas en situaciones en las que la pestaña de autenticación no está disponible en los dispositivos de los usuarios.
Implementa la pestaña de autenticación
La pestaña de autenticación requiere la biblioteca de autenticación del navegador de AndroidX. La biblioteca del navegador de AndroidX se puede agregar en la sección de dependencias del archivo build.gradle
de un proyecto. Las APIs están disponibles en una compilación alfa. Agrega lo siguiente a tu archivo de compilación:
dependencies {
implementation 'androidx.browser:browser:1.9.0-alpha01'
}
Antes de iniciar una pestaña de autenticación, declara un ActivityResultLauncher
que tome un ActivityResultCaller
y un ActivityResultCallback
. Esto se hace antes de crear la actividad o el fragmento:
// In your activity
private final ActivityResultLauncher<Intent> mLauncher =
AuthTabIntent.registerActivityResultLauncher(this, this::handleAuthResult);
private void handleAuthResult(AuthResult result) {
String message = switch (result.resultCode) {
case AuthTabIntent.RESULT_OK -> "Received auth result.";
case AuthTabIntent.RESULT_CANCELED -> "AuthTab canceled.";
case AuthTabIntent.RESULT_VERIFICATION_FAILED -> "Verification failed.";
case AuthTabIntent.RESULT_VERIFICATION_TIMED_OUT -> "Verification timed out.";
}
if (result.resultCode == AuthTabIntent.RESULT_OK) {
message += " Uri: " + result.resultUri;
}
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
A continuación, usa AuthTabIntent.Builder
para compilar un AuthTabIntent
y, luego, llama al método launch
. Los métodos de inicio aceptan uno de dos conjuntos de parámetros según el esquema que necesites:
redirectScheme: Para un esquema de redireccionamiento personalizado, el navegador redirecciona y muestra el URI con el esquema proporcionado.
redirectHost, redirectPath: Para los esquemas de redireccionamiento de HTTPS, la API requiere un host y una ruta de acceso independientes para que el navegador detecte el redireccionamiento y muestre el URI. Cuando usas HTTPS, se requiere la verificación del vínculo de recursos digitales.
private void launchAuthTab() {
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth"), "mycustomscheme");
}
private void launchAuthTabHttps() {
String host = "your_host";
String path = "your_path";
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
}
Cómo migrar de las pestañas personalizadas a la pestaña de autenticación
Para actualizar tu implementación de autenticación de pestañas personalizadas existente, modifica el intent de pestañas personalizadas al nuevo intent de pestaña de autenticación. Después de agregar el código, busca el intent de pestañas personalizadas y modifícalo al nuevo intent de pestaña de autenticación.
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
customTabsIntent.launchUrl(context, uri)
// change to -->
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", "mycustomscheme");
/* - OR - */
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
Resguardo a pestañas personalizadas
Algunas implementaciones pueden requerir autenticación cuando el dispositivo del usuario no está equipado para controlar la pestaña de autenticación. Por ejemplo, esto puede ocurrir si el navegador predeterminado no admite la pestaña de autenticación o si la versión del navegador predeterminado no está en el nivel requerido. En estos casos, un intent de pestaña de autenticación inicia automáticamente una pestaña personalizada para los navegadores que admiten este tipo de pestañas.
Para controlar esta situación de forma fluida, agrega la implementación de la pestaña de autenticación y mantén el código existente de las pestañas personalizadas que controla los flujos de autenticación como resguardo.
Los usuarios con dispositivos compatibles con la pestaña Auth ven el nuevo flujo de la pestaña Auth, mientras que otros recurren a la implementación heredada de las pestañas personalizadas. Ten cuidado con los datos que pueden llegar a tu ActivityResultCallback
o a tu intent de actividad. Ten en cuenta que, si se usa AuthTabIntent
para iniciar la experiencia de resguardo y el navegador actual no admite la pestaña de autenticación, tu app recibirá un resultado Activity.RESULT_CANCELED
cuando se cierre la pestaña personalizada.
Puedes encontrar un ejemplo de una implementación de la pestaña de autenticación con resguardo a pestañas personalizadas en la biblioteca de Android Browser Helper.