FaceAuthenticator - Flutter Plugin

Plugin que chama os SDKs nativos em Android e iOS. Caso tenha alguma dúvida, envie um email para o nosso Head of Mobile

Políticas de privacidade e termos e condições de uso

Ao utilizar nosso plugin, certifique-se que você concorda com nossas Políticas de privacidade e nossos Termos e condições de uso.

Pré requisitos

Configuração mínima Versão
Flutter 1.12+
Dart 2.12+
Android API 21+
iOS 11.0+

Caso você utilize Dart em uma versão abaixo de 2.12, confira a versão compatível aqui.

Configurações

Android

No arquivo ROOT_PROJECT/android/app/build.gradle, adicione:

android {

    ...

    dataBinding.enabled = true

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }

}

iOS

No arquivo ROOT_PROJECT/ios/Podfile, adicione no final do arquivo:

source 'https://github.com/combateafraude/iOS.git'
source 'https://cdn.cocoapods.org/' # ou 'https://github.com/CocoaPods/Specs' se o CDN estiver fora do ar

Por último, adicione a permissão de câmera no arquivo ROOT_PROJECT/ios/Runner/Info.plist:

<key>NSCameraUsageDescription</key>
<string>To capture the selfie</string>

Flutter

Adicione o plugin no seu arquivo ROOT_PROJECT/pubspec.yaml:

dependencies:  
  face_authenticator:
    git:
      url: https://github.com/combateafraude/Flutter.git
      ref: face-authenticator-v3.9.0

Utilização

FaceAuthenticator faceAuthenticator = new FaceAuthenticator(mobileToken: mobileToken);
faceAuthenticator.setPeopleId("The user CPF");

// Outros parâmetros de customização

FaceAuthenticatorResult faceAuthenticatorResult = await faceAuthenticator.start();

if (faceAuthenticatorResult is FaceAuthenticatorSuccess) {
  // O SDK foi encerrado com sucesso e obtivemos um resultado de autenticação, que pode ser verdadeiro ou falso
} else if (faceAuthenticatorResult is FaceAuthenticatorFailure) {
  // O SDK foi encerrado devido à alguma falha e não foi possível obter um resultado de autenticação
} else {
  // O usuário simplesmente fechou o SDK, sem nenhum resultado
}

Customizações gerais

FaceAuthenticator
.setPeopleId(String peopleId)

CPF do usuário que irá se autenticar
.setAudioSettings(bool enable, String audioResIdName)

Habilita/desabilita os sons. Permite customizar o áudio utilizado pelo SDK. Caso deseje mudar o áudio do SDK, adicione o arquivo de audio em ROOT_PROJECT/android/app/src/main/res/raw/ com o nome desejado seguindo e o parametrize
.setAnalyticsSettings(bool useAnalytics)

Habilita/desabilita a coleta de dados para maximização da informação antifraude. O padrão é true
.setNetworkSettings(int requestTimeout)

Altera as configurações de rede padrão. O padrão é 60 segundos
.setAndroidSettings(FaceAuthenticatorAndroidSettings androidSettings)

Customizações somente aplicadas em Android
.setIosSettings(FaceAuthenticatorIosSettings iosSettings)

Customizações somente aplicadas em iOS
.setEyesClosedSettings(bool enable, double threshold)

Permite customizar a validação de olhos abertos no SDK

Android

FaceAuthenticatorAndroidSettings constructor
FaceAuthenticatorCustomizationAndroid customization

Customização do layout em Android da activity
CaptureSettings captureSettings

Configuraçōes de tempos de estabilização para a captura da selfie
SensorSettingsAndroid sensorSettings

Customização das configurações dos sensores de captura
bool enableEmulator

Permite o uso de emulador quando true
bool enableRootDevices

Permite o uso de dispositivos root quando true
bool enableSwitchCameraButton

Permite habilitar ou desabilitar o botão de inversão da câmera. O padrão é True
bool enableBrightnessIncrease

Habilita/desabilita o incremento de brilho do dispositivo do dispositivo na abertura do SDK
bool useDebug

Habilita/desabilita o uso do app em modo depuração. O padrão é false
FaceAuthenticatorCustomizationAndroid constructor
String styleResIdName

Nome do style resource que define as cores do SDK. Por exemplo, caso deseje mudar as cores do SDK, crie um style em ROOT_PROJECT/android/app/src/main/res/values/styles.xml com o nome R.style.my_custom_style seguindo o template e parametrize "my_custom_style"
String layoutResIdName

Nome do layout resource que substituirá o layout padrão do SDK. Por exemplo, caso deseje mudar o layout do SDK, crie um layout em ROOT_PROJECT/android/app/src/main/res/layout/my_custom_layout.xml seguindo o template e parametrize "my_custom_layout"
String greenMaskResIdName

Nome do drawable resource à substituir a máscara verde padrão. Caso for usar este parâmetro, use uma máscara com a mesma área de corte, é importante para o algoritmo de detecção. Por exemplo, salve a imagem da máscara em ROOT_PROJECT/android/app/src/main/res/drawable/my_custom_green_mask.png e parametrize "my_custom_green_mask"
String redMaskResIdName

Nome do drawable resource à substituir a máscara vermelha padrão. Caso for usar este parâmetro, use uma máscara com a mesma área de corte, é importante para o algoritmo de detecção. Por exemplo, salve a imagem da máscara em ROOT_PROJECT/android/app/src/main/res/drawable/my_custom_red_mask.png e parametrize "my_custom_red_mask"
String whiteMaskResIdName

Nome do drawable resource à substituir a máscara branca padrão. Caso for usar este parâmetro, use uma máscara com a mesma área de corte, é importante para o algoritmo de detecção. Por exemplo, salve a imagem da máscara em ROOT_PROJECT/android/app/src/main/res/drawable/my_custom_white_mask.png e parametrize "my_custom_white_mask"
SensorSettingsAndroid constructor
SensorStabilitySettingsAndroid sensorStabilitySettings

Configurações do sensor de orientação à ser aplicado em todos os passos do SDK
SensorStabilitySettingsAndroid constructor
String messageResourceIdName

Nome do string resource à ser mostrado quando o celular não estiver estável. A mensagem padrão é "Mantenha o celular parado". Por exemplo, caso deseje mostrar a String "Teste", crie uma String em ROOT_PROJECT/android/app/src/main/res/values/strings.xml com o nome R.string.my_custom_stability_string e valor "Teste" e parametrize "my_custom_stability_string"
int stabilityStabledMillis

Quantos milissegundos o celular deve se manter no limiar correto para ser considerado estável. O padrão é 2000 ms
double stabilityThreshold

Limiar inferior entre estável/instável, em variação de m/s² entre as últimas duas coletas do sensor. O padrão é 0.5 m/s²

iOS

FaceAuthenticatorIosSettings constructor
FaceAuthenticatorCustomizationIos customization

Customização visual do SDK
int beforePictureMillis

Duração em milissegundos entre a primeira detecção do rosto e a efetiva captura da foto
SensorStabilitySettingsIos sensorStability

Configurações do sensor de estabilidade à ser aplicado no SDK
FaceAuthenticatorCustomizationIos constructor
String colorHex

Cor tema do SDK. Por exemplo, caso deseje usar a cor preta, utilize "#000000"
String greenMaskImageName

Nome da imagem à substituir a máscara verde padrão. Lembre de adicionar a imagem em Assets Catalog Document no seu projeto do XCode
String whiteMaskImageName

Nome da imagem à substituir a máscara branca padrão. Lembre de adicionar a imagem em Assets Catalog Document no seu projeto do XCode
String redMaskImageName

Nome da imagem à substituir a máscara vermelha padrão. Lembre de adicionar a imagem em Assets Catalog Document no seu projeto do XCode
String closeImageName

Nome da imagem à substituir o botão de fechar o SDK. Lembre de adicionar a imagem em Assets Catalog Document no seu projeto do XCode
bool showStepLabel

Flag que indica se deseja mostrar o label do passo atual
bool showStatusLabel

Flag que indica se deseja mostrar o label do status atual
SensorStabilitySettingsAndroid constructor
String message

String à ser mostrada quando o celular não estiver estável
double stabilityThreshold

Limiar inferior entre estável/instável, em variação de m/s² entre as últimas duas coletas do sensor. O padrão é 0.3 m/s²

Coletando o resultado

O objeto de retorno do FaceAuthenticator é do tipo abstrato FaceAuthenticatorResult. Ele pode ser uma instância de FaceAuthenticatorSuccess, FaceAuthenticatorFailure ou FaceAuthenticatorClosed.

FaceAuthenticatorSuccess

Campo
bool authenticated

Flag que indica se o usuário foi aprovado na autenticação facial
String signedResponse

Resposta assinada do servidor da CAF que confirmou a autenticação facial. 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
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

FaceAuthenticatorFailure

Campo
String message

Mensagem amigável explicando o motivo da falha do SDK
String type

Tipo de falha que encerrou o SDK

Os tipos de falha existentes são:

  • InvalidTokenReason: quando o token informado é inválido. Não deve ocorrer em um ambiente de produção;
  • PermissionReason: quando alguma permissão obrigatória não foi concedida pelo usuário. Só ocorrerá em um ambiente de produção se o seu app não solicitar ao seu usuário ou o mesmo desabilitar manualmente antes de iniciar;
  • NetworkReason: falha de conexão com o servidor. Ocorrerá em produção se o dispositivo do usuário estiver sem internet;
  • ServerReason: falha em alguma requisição com nossos servidores. Ocorrerá em produção somente no caso de uma falha nossa;
  • SecurityReason: quando o dispositivo não é seguro para executar o SDK. Se esta falha ocorrer, avise-nos;
  • StorageReason: quando o dispositivo não possui espaço suficiente para a captura de alguma foto. Pode ocorrer em produção;
  • LibraryReason: quando alguma falha interna impossibilitou a execução do SDK. Pode ocorrer devico à erros de configuração do projeto, não deve ocorrer em produção;