FaceAuthenticator
Facematch com prova de vida do usuário do seu app, ideal para fluxos de login ou de operações financeiras valiosas.
Tamanho do SDK
Um máximo de aproximadamente 3.8 MB, podendo diminuir por conta desses elementos.
Analytics
Nossos SDKs por padrão coletam informações sobre o usuário e ambiente em execução para melhorar o mapeamento de fraudadores e entender seus comportamentos. Recomendamos manter essa coleta ativa pois o único intuito desses dados é para redução de fraudes, mas se desejar, você desabilitar pelo parâmetro .setAnalyticsSettings(boolean useAnalytics)
.
Permissões em tempo de execução
Permissão | Motivo | Obrigatória? |
---|---|---|
CAMERA | Para capturar a selfie do usuário | Sim |
Instanciando o FaceAuthenticator
Primeiro, crie um objeto do tipo FaceAuthenticator
. Este objeto serve para você configurar todos as suas regras de negócio para o SDK:
FaceAuthenticator mFaceAuthenticator = new FaceAuthenticator.Builder(String mobileToken)
// veja a tabela abaixo
.build();
Todos os parâmetros anotados com
@Nullable
podem receber valoresnull
, útil caso você queira configurar somente um dos parâmetros de um mesmo método.
FaceAuthenticator.Builder
Parâmetro | Obrigatório? |
---|---|
String mobileToken Token de utilização associado à sua conta da CAF. | Sim |
.setPeopleId(String peopleId) Identificador do usuário para realização do facematch. Atualmente, esse valor aceita somente o CPF do usuário. | Sim |
.setAnalyticsSettings(boolean useAnalytics) Habilita/desabilita a coleta de dados para o analytics. | Não, o padrão é true |
.setStabilitySensorSettings(@Nullable SensorStabilitySettings sensorStabilitySettings) Altera as configurações padrão do sensor de estabilidade, Aplique null se não deseja utilizar este sensor. | Não. O tempo padrão é 1000 ms e o limiar padrão é 0.7 m/s² |
.setCaptureSettings(@Nullable CaptureSettings captureSettings) Define as configurações de captura. O método aceita instâncias das classes ImageCapture e VideoCapture . | Não. O padrão é ImageCapture |
.setLayout(@Nullable @LayoutRes Integer layoutId) Substitui o layout padrão do SDK. Crie um arquivo na pasta layout do seu projeto, copie este template e faça as alterações desejadas. | Não. O padrão é esse |
.setMask(@DrawableRes Integer greenMask, @DrawableRes Integer whiteMask, @DrawableRes Integer redMask) Troca as máscaras para captura da face: SUCESSO, NORMAL e FALHA, nesta ordem. Caso for utilizar esta opção, utilize máscaras com a mesma área de detecção da face, essa região é de suma importância para o algoritmo realizar a captura. | Não. Os padrões de máscara são: Normal Sucesso Falha |
.setStyle(@StyleRes int styleResourceId) Substitui o style padrão do SDK. No arquivo styles.xml do seu projeto, copie este template e edite. | Não. O padrão é esse |
.enableSwitchCameraButton(boolean enable) Permite habilitar/desabilitar o botão para o usuário trocar entre a câmera frontal e traseira. | Não. O padrão é True |
.setNetworkSettings(int requestTimeout) Define o tempo de timeout das requests do SDK. | Não. O padrão é 60 (segundos) |
.enableGoogleServices(boolean enable) Permite habilitar/desabilitar recursos do SDK que consomem GoogleServices no SDK, não recomendamos desabilitar os serviços por conta da perda de segurança. | Não. O padrão é true |
.setUseEmulator(boolean use) Permite o uso de emuladores quando true . Quando true , o modo ADB é ativado em conjunto para o emulador funcionar corretamente. Não é recomendado ativar esta opção, utilize apenas para fins de testes. | Não. O padrão é false |
.setUseRoot(boolean use) Permite o uso de dispositivos root quando true . | Não. O padrão é false |
.setUseDeveloperMode(boolean use) Permite o uso do modo de desenvolvedor quando true . Não é recomendado ativar esta opção, utilize apenas para fins de testes. | Não. O padrão é false |
.setUseAdb(boolean use) Permite o uso do modo de depuração Android Debug Bridge (ADB) quando true . Não é recomendado ativar esta opção, utilize apenas para fins de testes. | Não. O padrão é false |
.setUseDebug(boolean use) Permite o uso do app em modo debug quando true . Não é recomendado ativar esta opção, utilize apenas para fins de testes. | Não. O padrão é false |
.setAudioSettings(boolean use) Habilita/desabilita a reprodução dos áudios do SDK. | Não. O padrão é true |
.setAudioSettings(Integer audioResId) Permite customizar o áudio utilizado pelo SDK. | Não. O padrão é "Registro facial" |
.enableBrightnessIncrease(boolean enable) Habilita/desabilita o incremento de brilho do dispositivo na abertura do SDK. | Não. O padrão é True |
.setEyesClosedSettings(boolean enable, double threshold) Permite customizar as configurações de validação de olhos abertos do SDK. O método espera como parâmetro enable para habilitar ou não a validação, e threshold , valor entre 0.0 e 1.0 | Não. O padrão é true e 0.5 |
Desativando validações de segurança para teste
Estamos constantemente realizando ações para tornar o produto cada vez mais seguro, mitigando uma série de ataques observados ao processo de captura e, consequentemente, reduzindo o maior número de possíveis fraudes de identidade. O SDK possui alguns bloqueios que podem impedir a execução em certos contextos. Para desabilitá-los, você pode utilizar os métodos conforme o exemplo abaixo:
FaceAuthenticator.Builder("mobileToken")
.setUseEmulator(true)
.setUseRoot(true)
.setUseDeveloperMode(true)
.setUseAdb(true)
.setUseDebug(true)
.build();
Atenção! A desabilitação das validações de segurança são recomendadas apenas para testes. Para publicação do seu aplicativo em produção, recomendamos utilizar as configurações padrão.
Iniciando o FaceAuthenticatorActivity
Após a criação do FaceAuthenticator
, inicie a FaceAuthenticatorActivity
passando esse objeto como parâmetro via intent extra:
Intent mIntent = new Intent(context, FaceAuthenticatorActivity.class);
mIntent.putExtra(FaceAuthenticator.PARAMETER_NAME, mFaceAuthenticator);
startActivityForResult(mIntent, REQUEST_CODE);
Obtendo o resultado
Para obter o objeto FaceAuthenticatorResult
, que contém as capturas obtidas pelo SDK, sobrescreva o método onActivityResult
na mesma activity que você iniciou a FaceAuthenticatorActivity
:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_OK && data != null) {
FaceAuthenticatorResult mFaceAuthenticatorResult = (FaceAuthenticatorResult) data.getSerializableExtra(FaceAuthenticatorResult.PARAMETER_NAME);
// verifique mFaceAuthenticatorResult.getSDKFailure() para descobrir qual foi o motivo da finalização do SDK
} else {
// o usuário fechou a activity
}
}
super.onActivityResult(requestCode, resultCode, data);
}
FaceAuthenticatorResult
Parâmetro | Pode ser nulo? |
---|---|
boolean authenticated Flag que indica se a selfie capturada passou no facematch com a foto armazenada no servidor da CAF e o respectivo CPF informado pelo usuário. | Não |
String signedResponse Resposta assinada do servidor da CAF que realizou o facematch. Utilize esse parâmetro caso queira uma camada extra de segurança, verificando se a assinatura da resposta não está quebrada, provocada por uma interceptação da requisição. Se estiver quebrada, há um grande indício de interceptação da requisição. | Sim, em caso de erro |
String trackingId Identificador dessa execução em nossos servidores. Se possível, salve este campo e mande-o junto para nossa API. Assim, teremos mais dados de como o usuário se comportou durante a execução. | Sim, caso o usuário configure useAnalytics = false ou as chamadas de analytics não funcionem |
SDKFailure sdkFailure Objeto que informa o motivo do encerramento do SDK. Para mais informações, veja aqui. | Sim, em caso de sucesso |
lensFacing: Int Define a face da câmera que foi utilizada. Utilize FaceAuthenticatorResult.LENS_FACING_FRONT ou FaceAuthenticatorResult.LENS_FACING_FRONT para validar. | Não |