Web
Passo a Passo
O SDK JavaScript do AllowMe permite:
- Realizar capturas de fingerprint dos usuários para a validação de transações pelo seu backend.
- Registrar eventos para acompanhamento do fluxo de navegação e ações.
- Capturar e tipificar documentos para análise automatizada e/ou manual.
Este início rápido mostra como carregar o JavaScript do AllowMe e realizar estas ações.
Nota importante sobre a funcionalidade de Captura de Documentos
A Captura de Documentos ainda é uma versão beta e a integração da versão beta para a stable ainda poderá sofrer modificações (Breaking Change)
1. Carregar e Inicializar o SDK
O SDK do AllowMe não possui arquivos ou dependências que precisam ser baixadas e anexadas ao projeto. É necessário apenas incluir um pequeno trecho de código nos seus arquivos HTML (como index.html) que carrega o SDK de forma assíncrona.
O seguinte trecho de código, com as duas tags <script>, carrega e inicializa o SDK. Recomendamos que seja adicionado na tag <head> do seu HTML.
- Básico
- Completo
- React
- Vue
Configure as variáveis de ambiente VUE_APP_ALLOWME_API_KEY e VUE_APP_SDK_JS_URL de acordo com seu ambiente (stage ou prod). Referência
<html>
<head>
<script>
window.alwmAsyncInit = () => Alwm.init({
apiKey: '<%= VUE_APP_ALLOWME_API_KEY %>',
});
</script>
<script async defer src="<%= VUE_APP_SDK_JS_URL %>" type="text/javascript">
</script>
...
TIP
A apikey-integração-web deve ser informada pelo AllowMe. Ela é exclusiva para o uso no SDK JavaScript e diferente para o ambiente de Homologação e para o ambiente de Produção.
Nota importante sobre a URL
Como o JavaScript de integração é gerado de forma dinâmica, não é possível hospedar no servidor do cliente. No exemplo acima estamos considerando o ambiente de Homologação. Para utilizar o ambiente de Produção é necessário alterar para a URL abaixo:
Explicação
No exemplo de código acima, é definida a função window.alwmAsyncInit, que é chamada automaticamente ao fim do carregamento do arquivo .js.
Na implementação da função, para realizar a inicialização do SDK com sua API key, deve-se chamar o método:
Alwm.init({ apiKey: '<apikey-integração-web>' });
O método retorna uma Promise (opens new window)que pode ser verificada com:
- .then() - inicializou com sucesso; e/ou
- .catch(error) - ocorreu um erro ao inicializar o SDK. Verifique o valor de error para obter mais detalhes.
- Consulte também o exemplo completo de inicialização.
2.Capturas de Fingerprint
O fingerprint do browser do usuário deve ser capturado com o método Alwm.collect() e enviado ao seu backend, junto com as informações necessárias para realizar sua transação, para validação de fluxos que você considera importante, tais como: login, troca de senha, atualização de dados pessoais etc.
Coletas precisam ser realizadas para que as transações possam ser validadas pelo seu backend e comprovarem ou não a autenticidade do usuário.

- Básico
- Completo
const fingerprint = await Alwm.collect()
Explicação
O método retorna uma Promise<String> (opens new window), com um valor do tipo String contendo o fingerprint criptografado, que pode ser obtido com:
- await Alwm.collect() - em caso de sucesso, retorna a String do fingerprint; ou
- .then(fp => fingerprint = fp) - captura com sucesso, com fp sendo a String e atribuindo o valor à variável fingerprint; e
- .catch(error) - ocorreu um erro ao realizar a captura. Verifique o valor de error para obter mais detalhes.
O valor de fingerprint deve ser enviado ao seu backend na validação das transações.O exemplo no final desta página mostra o uso em uma tela de login
Exemplo - Tela de Login
O seguinte exemplo demonstra como a captura de fingerprint pode ser integrada à um formulário de login.
...
<body>
<!-- Exemplo de uma tela de login com o envio do formulário via função "enviarFormularioLogin()" -->
<form id="my_form_id" onsubmit="return enviarFormularioLogin()">
<input type="text" id="login" />
<input type="password" id="password" />
</form>
<script type="text/javascript">
// O fingerprint deve ser enviado para o backend do cliente, no momento em que o formulário for submetido.
function enviarFormularioLogin() {
Alwm.collect('login').then(function (fingerprint) {
// O fingerprint é retornado pela Promise.
// Enviar os dados de login para o seu backend, junto com o Fingerprint do AllowMe.
// Exemplo:
// $.ajax({
// method: "POST",
// url: "login",
// data: {
// login: $('#login').val(),
// password: $('#password').val(),
// fingerprint: fingerprint,
// },
// });
});
}
</script>
</body>
...
TIP
Agora que você já inicializou o SDK e realizou uma captura, o próximo passo é validar a transação no seu backend.
SDK Js Biometria Facial
Agora que você já está com o setup inicial pronto, vamos aprender como usar o AllowMeSDK Biometria Facial! 😉
Utilizar as URLs da FaceTec
Nota importante sobre a URL
URL de Homologação: https://stage-sdk-js.allowme.com.br/v3/facetec/allowme.min.js URL de Produção: https://sdk-js.allowme.com.br/v3/facetec/allowme.min.js
Versionamento, o SDK pode ser versionado em com MAJOR, MINOR ou PATCH.
TIP
Nós recomendamos que você utilize o MINOR version, para que não seja necessário atualizar a URL a cada nova versão do SDK. MAJOR: https://sdk-js.allowme.com.br/v3/facetec/allowme.min.js MINOR: https://sdk-js.allowme.com.br/v3.0/facetec/allowme.min.js PATCH: https://sdk-js.allowme.com.br/v3.0.1/facetec/allowme.min.js
TIP
O SDK JS Biometria Facial é o nosso produto responsável por validar a identidade do usuário, aumentando a segurança do seu negócio ao mesmo tempo em que diminui a fricção. Verificamos se a foto é válida e se trata de uma pessoa real ou se é uma tentativa de falsificação, checando se o usuário corresponde ao CPF informado durante o cadastro.
Para realizar a integração da Biometria Facial do SDK no seu projeto, é só seguir os passos abaixo! 😄
1. Inicializando a biometria facial
Para inicializar a Biometria facial é necessário já ter carregado e inicializado o SDK, como demonstrado aqui Carregar e Inicializar o SDK, fornecendo a sua chave de API.
TIP
Caso ainda não possua uma chave de API do allowMe, entre em contato com nosso suporte via [email protected]
1.1 Processo de Configuração da Biometria
A configuração da Biometria Facial é realizada através do método Alwm.setup() que tem como parâmetros:
Elemento html onde será carregado o objeto AllowMe de Biometria Facial (ex.: div, span, etc). Este objeto é responsável por carregar e mostrar a câmera que captura as imagens do usuário.
Opções de customização da biometria. É possível customizar o layout do objeto AllowMe de Biometria Facial de forma que a tipografia e as cores sigam a mesma identidade visual do seu aplicativo. Esta customização é opcional, tendo em vista que caso não seja passado nenhuma customização a biometria trabalhará com valores padrões. Os recursos de áudio, imagem e etc podem ser baixados diretamente no repositório sdk-facetec-browser
Segue abaixo as possíveis customizações da Biometria Facial:
TIP
Por padrão, a versão do SDK da FaceTec carregada será a disponível em https://facetec.allowme.com.br/v9.7. No entanto, se necessário, você pode especificar uma versão diferente utilizando os atributos de CDN ou resources, images e audios.
const customOptions = {
// Diretório dos recursos do SDK da FaceTec (resources, FaceTec_images e VocalGuidance_Audio_files)
faceTecSdkCdnUrl: "https://stage-facetec.allowme.com.br/v9.7.44",
// Diretório dos recursos utilizados na customização
resourcesDirectory: "facetec-sdk/FaceTecSDK.js/resources",
// Diretório root com as imagens que podem ser utilizadas na customização
imagesDirectory: "facetec-sdk/FaceTec_images",
// Diretório root com as áudios que podem ser utilizadas na customização
audiosDirectory: "facetec-sdk/Vocal_Guidance_Audio_Files",
wizard: {
// Boleano que controla se a tela de wizard será apresentada
enabled: true,
// Cor do Título da tela Wizard
titleColor: '#2a5595',
// Alinhamento do Título da tela Wizard
titleAlign: 'left',
// Boleano que controla se o botão de sair será apresentado
buttonCloseEnabled: true,
// Cor do Texto do botão
buttonTextColor: '#ffffff',
// Cor do Background do botão
buttonBackgroundNormalColor: '#2a5595',
// Cor do Botão no momento em que estiver em Highlight (com o mouse sobre o botão)
buttonBackgroundHighlightColor: '#77127b',
// Cor do Botão desativado
buttonBackgroundDisabledColor: '#5e6976',
instructionsScreen: {
// Cor de Backgrounda da logo
logoBackgroundColor: '#e1e4ef',
// Cor dos Ícones das instruções
iconBackgroundColor: '#2a5595',
// Cor do Texto das instruções
itemColor: '#4b5563'
},
},
faceTecCustomization: {
// Imagem Customizada que irá ser mostrada no momento de iniciar a captura
appLogo: undefined,
// Cor de Background no momento que a Biometria Facial estiver sendo carregada
loadingBackgroundColor: "#0000ff",
// Cor de Foreground na tela de Orientação
guidanceForegroundColor: "#1d4f91",
// Cor da Borda da imagem na tela de retry
guidanceRetryScreenImageBorderColor: "#1d4f91",
// Cor do Traço oval da tela de retry
guidanceRetryScreenOvalStrokeColor: "#1d4f91",
// Cor de Foreground na tela de seleção
idScanSelectionScreenForegroundColor: "#1d4f91",
// Cor do Botão na tela de scan
idScanButtonBackgroundNormalColor: "#1d4f91",
// Cor do Botão na tela de scan no momento em que estiver em Highlight (com o mouse sobre o botão)
idScanButtonBackgroundHighlightColor: "#1d4f91",
// Cor do Texto na tela de Review
idScanReviewScreenTextBackgroundColor: "#1d4f91",
// Cor do Traço na tela de Captura
idScanCaptureFrameStrokeColor: "#1d4f91",
// Cor do Borda do Frame
frameBorderColor: "#1d4f91",
// Cor de texto no momento do carregamento da Biometria Facial
loadingTextColor: "#585858",
// Fonte do texto no momento do carregamento da Biometria Facial
initialLoadingFont: "Roboto, sans-serif",
// Boleano que controla se o botão de Cancelar deve aparecer
cancelButton: true,
// Fonte do botão Inicial
initialButtonFont: "Roboto, sans-serif",
// Cor do Botão
buttonNormalColor: "#002DD1",
// Cor do Botão no momento em que estiver em Highlight (com o mouse sobre o botão)
buttonHighlightColor: "#1d4f91",
// Cor do Botão desabilitado
buttonDisabledColor: "#cccccc",
// Cor do Texto do Botão
buttonTextNormalColor: '#ffffff',
// Cor do Texto do Botão no momento em que estiver em Highlight (com o mouse sobre o botão)
buttonTextHighlightColor: '#ffffff',
// Cor do Texto do Botão desabilitado
buttonTextDisabledColor: '#ffffff',
// Cor da borda do Botão
buttonBorderColor: "transparent",
// Tamanho da borda do Botão
buttonBorderWidth: "0px",
// Tamanho das bordas arredondadas do Botão
buttonBorderRadius: "20px",
// Tamanho das bordas arredondadas do Botão de tentar novamente (Retry)
retryScreenImageBorderWidth: "2px",
// Cor de fundo em caso de sucesso
successBackgroundColor: "#09DEA1",
// Cor de fundo da animação em caso de sucesso
resultAnimationSuccessBackgroundImage: "",
// Cor da barra de progresso no momento do envio das imagens
uploadProgressFillColor: "#375AD0",
// Cor da fundo no momento do feedback
feedbackBackgroundColor: "rgba(45, 53, 73, 0.9)",
// Cor do texto no momento do feedback
feedbackTextColor: "#fff",
// Fonte do texto no momento do feedback
feedbackTextFont: "Roboto, sans-serif",
// Tamanho das bordas no momento do feedback
feedbackCornerRadius: "8px",
// Tamanho das sombras no momento do feedback
feedbackShadow: "0px 6px 12px black",
// Cor do contorno onde a imagem da Biometria Facial será mostrada ao usuário
ovalStrokeColor: "transparent",
// Cor do contorno do progresso onde a imagem da Biometria Facial será mostrada ao usuário
ovalProgressColor1: "#1d4f91",
// Cor do contorno secundária do progresso onde a imagem da Biometria Facial será mostrada ao usuário
ovalProgressColor2: "#1d4f91",
// Fonte do título da tela quando a Biometria Facial tiver finalizado o processo
readyScreenHeaderFont: "Roboto, sans-serif",
// Cor do título da tela quando a Biometria Facial tiver finalizado o processo
readyScreenHeaderTextColor: "#585858",
// Fonte do subtítulo da tela quando a Biometria Facial tiver finalizado o processo
readyScreenSubtextFont: "Roboto, sans-serif",
// Cor do subtítulo da tela quando a Biometria Facial tiver finalizado o processo
readyScreenSubtextColor: "#585858",
// Fonte do título que é mostrado ao usuário quando a tela de Retentativa for mostrada na Biometria Facial
retryScreenHeaderFont: "Roboto, sans-serif",
// Cor do título que é mostrado ao usuário quando a tela de Retentativa for mostrada na Biometria Facial
retryScreenHeaderTextColor: "#585858",
// Fonte do subtítulo que é mostrado ao usuário quando a tela de Retentativa for mostrada na Biometria Facial
retryScreenSubtextFont: "Roboto, sans-serif",
// Cor do subtítulo que é mostrado ao usuário quando a tela de Retentativa for mostrada na Biometria Facial
retryScreenSubtextTextColor: "#585858",
// Boleano que controla se o assistente por voz deve ser ativado na Biometria Facial
vocalGuidanceEnabled: true,
// Cor do título que é mostrado ao usuário quando a tela de Permissão da Camera for mostrada
cameraPermissionHeaderColor: "#52605A",
// Cor do subtítulo da tela de Permissão da Camera
cameraPermissionSubtextColor: "#52605A",
// Cor do texto do botão de OK da tela de Permissão da Camera
cameraPermissionActionButtonColor: "#ffffff"
}
}
Exemplo
// objeto para que serve para customizar como será apresentada a Biometria Facial
// este objeto pode ser vazio caso não queira nenhuma customização.
// const customOptions = {}
const customOptions = {
wizard: {
enabled: true,
titleColor: 'green',
titleAlign: 'center',
instructionsScreen: {
logoBackgroundColor: '#e1e4ef',
iconBackgroundColor: '#2a5595',
itemColor: '#4b5563'
},
},
faceTecCustomization: {
loadingBackgroundColor: "#0000ff",
guidanceForegroundColor: "#1d4f91",
guidanceRetryScreenImageBorderColor: "#1d4f91",
guidanceRetryScreenOvalStrokeColor: "#1d4f91",
idScanSelectionScreenForegroundColor: "#1d4f91",
idScanButtonBackgroundNormalColor: "#1d4f91",
idScanButtonBackgroundHighlightColor: "#1d4f91",
idScanReviewScreenTextBackgroundColor: "#1d4f91",
idScanCaptureFrameStrokeColor: "#1d4f91",
vocalGuidanceEnabled: true
}
}
// Chamada ao método setup para configurar a Biometria Facial
function setup() {
Alwm.setupLiveness({
options: customOptions,
callback: (callback) => {
console.log('Alwm.setupLiveness - callback:', callback)
}
}).then(() => {
console.log('SDK Inicializado!');
}).catch(error => {
console.log('Erro ao inicializar o SDK!');
});
}
<div>
<h1 className="title">Liveness Facetec</h1>
<button onClick="setup()">Configurar AllowMe Biometria Facial</button>
</div>
No exemplo acima, o Alwm.setup é chamado no momento em que o botão é clicado. É importante ressaltar que o método de setup pode fazer requisições e outros processamentos mais pesados, e assim, sugerimos que este método seja chamado o mais breve possível, visto que é necessário carregar todas as dependências para que a Biometria Facial possa funcionar.
1.2 Chamada a Biometria Facial
Após o processo de configuração (chamada ao método Alwm.setup) podemos carregar a biometria facial através do método Alwm.startLiveness(). Este método retorna uma Promise que pode ser verificada com:
- .then() - fez o processo de captura com sucesso e retorna um objeto do tipo BiometricsResult; e/ou
- .catch(error) - ocorreu um erro na Biometria Facial. Verifique o valor de error para obter mais detalhes.
Abaixo temos um exemplo de como o método startLiveness pode ser chamado para capturar as informações de Biometria Facial.
// Chamada ao método startLiveness para inicializar a Biometria Facial
function start() {
Alwm.startLiveness().then(biometricsResult => {
console.log(`biometricsResult: `, biometricsResult);
}).catch(error => {
console.error(error);
});
}
<div className="container">
<h1 className="title">Liveness Facetec</h1>
<button onClick="setup()">Configurar AllowMe Biometria Facial</button>
<button onClick="start()">Inicializar o processo de Biometria</button>
</div>
Caso a Biometria Facial tenha sido feita com sucesso, a chamada a Promise resultará no método then que retorna um objeto do tipo BiometricsResult. Este objeto é composto dos seguintes atributos:
BiometricsResult {
images: string[];
event: string;
error?: {
code: number;
status: number;
detail: string;
};
}
O array de imagens vem codificado em base64 e o atributo event é o fingerprint que é necessário para fazer uma validação de transação. (Vale ressaltar que as imagens tem que ser decodificas antes de enviar as imagens ao Backend AllowMe).
Os atributos event e images serão repassados ao seu Backend e posteriormente para o Backend do AllowMe para validar a sua transação. Para mais informações Validação de uma transação
O atributo error é preenchido caso algum erro aconteça na Biometria Facial. Abaixo seguem os possíveis erros que podem ocorrer:
Código de Erro(error.code) | Origem do Erro |
---|---|
100 | Serasa SDK |
200 | FaceTec SDK |
300 | FaceTec Session |
Código de Erro(error.code) | Tipo do Erro(error.status | Descriçao |
---|---|---|
100 | 0 | Erro desconhecido |
100 | 1 | Erro interno no SDK |
200 | 0 | Nunca inicializado |
200 | 1 | Inicializado |
200 | 2 | Problemas de rede |
200 | 3 | Chave inválida do dispositivo |
200 | 4 | Versão obsoleta |
200 | 5 | Dispositivo não suportado |
200 | 6 | Dispositivo em modo paisagem |
200 | 7 | Dispositivo bloqueado |
200 | 8 | Chave expirada ou inválida |
200 | 9 | IFrame não permitido sem permissão |
200 | 10 | Ainda carregando recursos |
200 | 11 | Recursos não carregados na última inicialização |
200 | 12 | GetUserMedia remoto HTTP não suportado |
300 | 0 | Sessão concluída com sucesso |
300 | 1 | Imagens de orientação faltando |
300 | 2 | Tempo esgotado |
300 | 3 | Mudança de contexto |
300 | 4 | Cancelado programaticamente |
300 | 5 | Mudança de orientação durante sessão |
300 | 6 | Modo paisagem não permitido |
300 | 7 | Usuário cancelado |
300 | 8 | Usuário cancelado da nova orientação |
300 | 9 | Usuário cancelado da orientação de repetição |
300 | 10 | Usuário cancelado ao tentar obter permissões de câmera |
300 | 11 | Bloqueado |
300 | 12 | Câmera não habilitada |
300 | 13 | Chave inválida do dispositivo em modo não produção |
300 | 14 | Documento não pronto |
300 | 15 | Sessão em andamento |
300 | 16 | Câmera não executando |
300 | 17 | Inicialização não concluída |
300 | 18 | Erro interno desconhecido |
300 | 19 | Usuário cancelado via texto clicável da tela pronta |
300 | 20 | Não permitido usar construtor IFrame |
300 | 21 | Não permitido usar construtor não IFrame |
300 | 22 | IFrame não permitido sem permissão |
300 | 23 | Ainda carregando recursos |
300 | 24 | Recursos não carregados na última inicialização |
300 | 25 | Usuário cancelado modo tela cheia |
Updated 1 day ago