Deseja melhorar a segurança do seu aplicativo e, ao mesmo tempo, manter uma excelente usabilidade? A autenticação local pode ser o caminho a seguir. Esta documentação mostrará como você pode solicitar que os usuários do seu aplicativo digitem o PIN do dispositivo, a impressão digital ou o ID facial antes de acessar partes do aplicativo.
Habilitando o recurso
Habilite a permissão biométrica em suas configurações de permissão. Caso contrário, este recurso pode funcionar apenas parcialmente (sem identificação facial) ou quebrar de maneiras inesperadas.
Usando a função do JavaScript
executeWhenAppReady() do nosso script auxiliar de aplicação. Ele garante que seu site não tente interagir com o aplicativo antes que ele esteja pronto ou quando o site for carregado usando um navegador comum (ReferenceError, a função não está definida). requestLocalAuthentication
Use esta função para solicitar a autenticação do usuário.
A função retorna um objeto com um resultado booleano em caso de sucesso. Se o prompt de autenticação for cancelado ou o dispositivo não conseguir continuar, ela lança um código de erro em string.
<script>
try {
// This message will be displayed to the user along with the prompt.
let reason = "Please authenticate to access this part of the app";
// Returns a boolean. True if the authentication was successful, false if the authentication challenge failed.
// If the prompt is canceled or the device cannot continue, an error string is thrown instead.
let authenticationResult = (await requestLocalAuthentication(reason))["result"];
}
catch (e) {
switch(e) {
case "userCanceled":
// The user canceled the prompt and didn't authenticate.
break;
case "authInProgress":
// Another authentication request is already running.
break;
case "noCredentialsSet":
// No biometrics, PIN, password, or pattern is configured.
break;
case "systemCanceled":
// The system interrupted the authentication attempt, for example when the app gets closed.
break;
// All the errors below should be very rare in practice:
case "timeout":
// The authentication prompt timed out.
break;
case "uiUnavailable":
// The system cannot show the authentication prompt right now.
break;
case "deviceError":
// A device-level error prevented authentication.
break;
case "unknownError":
// An unknown error occurred.
break;
default:
// Any other error
break;
}
}
</script>
Migração para apps atualizados pela última vez antes de 21 de março de 2026
Versões antigas do app ainda podem estar lidando com strings de erro como NotAvailable, PasscodeNotSet, LockedOut e PermanentlyLockedOut.
- NotAvailable não é mais um caso específico. Normalmente vai virar noCredentialsSet, uiUnavailable ou unknownError.
- PasscodeNotSet agora é noCredentialsSet.
- LockedOut e PermanentlyLockedOut parecem não acontecer mais.
- UserCancelled agora é userCanceled.
- auth_in_progress agora é authInProgress.
- no_activity e no_fragment_activity agora são uiUnavailable.