A guia "Autenticação" oferece um fluxo de autenticação seguro e simplificado para uso em apps Android. Ao criar e iniciar uma AuthTabIntent
, você pode invocar uma guia personalizada especializada projetada para gerenciar uma experiência de autenticação de ponta a ponta. A guia é simplificada e tem recursos limitados, permitindo que os usuários se concentrem na tarefa. Ao concluir, a guia faz uma chamada de volta para o aplicativo com um resultado usando https ou esquemas personalizados.


A partir do Chrome 137, a guia de autenticação pode substituir diretamente as integrações de autenticação das guias personalizadas. Para usuários cujos dispositivos não são compatíveis com a guia de autenticação, o fallback para guias personalizadas é automático. Para migrar das guias personalizadas para a guia de autenticação, basta modificar algumas linhas de código.
Como funciona
Com a guia de autenticação, um app cliente inicia uma guia personalizada especializada que apresenta uma janela do navegador carregando um URL com a página de autenticação esperada. Após a conclusão, a guia de autenticação retorna o resultado usando um callback.
Após a autenticação, quando ocorre uma navegação para o URI de redirecionamento de retorno de chamada fornecido anteriormente, o redirecionamento é capturado e retornado ao aplicativo cliente usando o retorno de chamada. Para redirecionamentos que usam o esquema https, o navegador verifica se o domínio de redirecionamento e o app cliente pertencem ao mesmo editor usando os Links de recursos digitais.
O cliente recebe o URI navegado com o esquema de redirecionamento (ou, para https, host e caminho de redirecionamento) usando o callback fornecido. Esses dados incluem um código de resultado e outros dados fornecidos pela interface de autenticação. Você pode usar esses dados para verificar a autenticação ou lidar com cenários sem sucesso.
Por que usar a guia "Autorização"?
Antes da guia de autenticação, era possível usar uma intent de guias personalizadas padrão para ativar fluxos de autenticação. Uma guia de autenticação é preferível porque oferece segurança aprimorada, uma experiência simplificada e também abstrai alguns dos elementos internos para autenticação do código do cliente. Por esses motivos, a guia "Autenticação" oferece uma experiência melhor.
Segurança reforçada
Em uma implementação típica de guia personalizada, uma intent é necessária para receber dados da janela do navegador que processa a autenticação. Isso exige código adicional e expõe seu app a possíveis interferências na sua intenção. Com uma guia de autenticação, os dados são recebidos usando um callback, com transferência direta de dados entre a API Android e o app cliente.
Uma experiência simplificada
Em uma guia personalizada, o usuário tem acesso a outros recursos no navegador que podem ser indesejados para um fluxo de autenticação. Uma guia de autenticação oferece uma experiência simplificada que remove a maioria das opções de personalização disponíveis em uma guia personalizada padrão. Para navegadores Chrome, isso inclui o botão de minimizar, o menu contextual de pressionar e manter pressionado e o toque para pesquisar, além de itens de menu para Abrir no Chrome, adicionar aos favoritos, fazer o download e compartilhar, e Adicionar à tela inicial.
As guias de autenticação ainda mantêm recursos para o navegador preencher automaticamente senhas e pagamentos salvos anteriormente, navegar para trás ou para frente, atualizar, mostrar informações da página, solicitar uma versão para computador da página e fornecer tradução.
Abstração de dados
A implementação da guia de autenticação por si só elimina a necessidade de uma intent para receber dados do navegador, bem como filtros de intent em AndroidManifest.xml
, que eram necessários para que a autenticação funcionasse corretamente. Isso elimina a complexidade do lado do cliente. Alguns desses recursos ainda podem ser incluídos no código do cliente para oferecer compatibilidade com versões anteriores das guias personalizadas em situações em que a guia de autenticação não está disponível nos dispositivos dos usuários.
Implementar a guia "Autenticação"
A guia "Autenticação" exige a biblioteca de autenticação do navegador AndroidX. A biblioteca do navegador AndroidX pode ser adicionada à seção de dependências do arquivo build.gradle
de um projeto. As APIs estão disponíveis em um build Alfa. Adicione o seguinte ao arquivo de build:
dependencies {
implementation 'androidx.browser:browser:1.9.0'
}
Antes de iniciar uma guia de autenticação, declare um ActivityResultLauncher
que receba um ActivityResultCaller
e um ActivityResultCallback
. Isso é feito antes da criação da atividade ou do 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();
}
Em seguida, use AuthTabIntent.Builder
para criar um AuthTabIntent
e chame o método launch
. Os métodos de inicialização aceitam um de dois conjuntos de parâmetros com base no esquema necessário:
redirectScheme: para um esquema de redirecionamento personalizado, o navegador redireciona e retorna o URI com o esquema fornecido.
redirectHost, redirectPath: para esquemas de redirecionamento https, a API exige um host e um caminho separados para que o navegador detecte o redirecionamento e retorne o URI. Ao usar https, é necessário fazer a verificação do Digital Asset Link.
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);
}
Migrar das guias personalizadas para a guia de autenticação
Atualize a implementação de autenticação das guias personalizadas modificando a intent das guias personalizadas para a nova intent da guia de autenticação. Depois de adicionar o código, localize a intent das guias personalizadas e modifique-a para a nova intent da guia de autenticação.
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);
Fazer fallback para guias personalizadas
Algumas implementações podem exigir autenticação quando o dispositivo do usuário não está equipado para lidar com a guia "Autenticação". Por exemplo, isso pode acontecer se o navegador padrão não for compatível com a guia de autenticação ou se a versão dele não estiver no nível necessário. Nesses casos, uma intent de guia de autenticação inicia automaticamente uma guia personalizada em vez de navegadores que oferecem suporte a guias personalizadas.
Use CustomTabsClient#isAuthTabSupported()
para verificar se a guia de autenticação é compatível com o navegador. Com esse método, seu app pode escolher dinamicamente entre iniciar uma guia de autenticação ou um fluxo de guias personalizadas com base nos recursos do navegador. Para lidar com a situação em que a guia de autenticação não é compatível, adicione a implementação dela e mantenha o código das guias personalizadas que processa fluxos de autenticação como substituto.
Tome cuidado ao processar dados que podem vir do seu ActivityResultCallback
ou da intent de atividade. Se AuthTabIntent
for usado para iniciar a experiência alternativa e a guia de autenticação não for compatível com o navegador atual, seu app vai receber um resultado Activity.RESULT_CANCELED
quando a guia personalizada for fechada.
Um exemplo de implementação da guia de autenticação com fallback para guias personalizadas pode ser encontrado na biblioteca Android Browser Helper.