> For the complete documentation index, see [llms.txt](https://docs.caf.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.caf.io/caf-sdk/caf-sdk-pt-br/android/standalone-modules/faceauthenticator.md).

# Face Authenticator (OBSOLETO)

{% hint style="warning" %}
Este SDK foi descontinuado; em vez de usá-lo, use o CafSDK com o módulo CafFaceLiveness com o parâmetro `executeFaceAuth = true` na objeto de configuração `CafFaceLivenessConfig`.
{% endhint %}

## FaceAuthenticator

### Versão atual

| Nome                | Versão |
| ------------------- | ------ |
| `FaceAuthenticator` | 5.5.0  |

### Requisitos

* Versão mínima da API do Android SDK: `minSdk 26` (Android 8 Oreo)
* Versão da API do Android SDK para compilação: `compileSdk 34`

Para publicar seu app na *Google Play Store*, você precisa preencher um formulário de segurança de dados. Como integramos com o *SDK FingerPrintJS*, você precisará fornecer as seguintes informações:

| Pergunta no formulário de segurança de dados do Google Play Console         | Resposta                                                  |
| --------------------------------------------------------------------------- | --------------------------------------------------------- |
| Seu app coleta ou compartilha algum dos tipos de dados do usuário exigidos? | Sim.                                                      |
| Que tipo de dado é coletado?                                                | Identificadores do dispositivo ou outros identificadores. |
| Esse dado é coletado, compartilhado ou ambos?                               | Coletado.                                                 |
| Esse dado é processado de forma efêmera?                                    | Sim.                                                      |
| Por que esses dados do usuário são coletados?                               | Prevenção a fraudes, segurança e conformidade.            |

{% hint style="warning" %}
`nome da versão` e `código da versão` são obrigatórios para que o SDK funcione corretamente.
{% endhint %}

### Dependências do SDK

O FaceAuthenticator utiliza os seguintes SDKs externos:

| SDK            | Versão |
| -------------- | ------ |
| `FaceLiveness` | 5.2.0  |

* [FaceLiveness Android](https://github.com/combateafraude/public-docs/blob/docs-sdks/android/getting-started/faceliveness.md): Permite a integração da verificação facial ao vivo e da tecnologia de autenticação por impressão digital.

#### Dependências transitivas

| SDK                         | Versão |
| --------------------------- | ------ |
| `iProov Biometrics Android` | 11.1.0 |
| `Fingerprint Pro Android`   | 2.7.0  |

* [iProov Biometrics Android](https://github.com/iProov/android): Permite a integração da tecnologia de verificação facial ao vivo.
* [Fingerprint Pro Android](https://github.com/fingerprintjs/fingerprintjs-pro-android-demo): Fornece recursos de autenticação por impressão digital para aprimorar os recursos de segurança do seu app.

Essas dependências são facilmente gerenciadas pelo Gradle e vêm incluídas no SDK para facilitar a instalação.

#### Permissões em tempo de execução

| Permissão | Motivo                                                   | Obrigatório |
| --------- | -------------------------------------------------------- | ----------- |
| `CÂMERA`  | Captura da selfie em políticas com reautenticação facial | Sim         |

#### Instalação

Se a sua versão do Gradle for anterior à 7, adicione estas linhas ao seu `build.gradle`.

```groovy
allprojects {
  repositories {
  ...
  maven { url 'https://repo.combateafraude.com/android/release' }
  maven { url 'https://raw.githubusercontent.com/iProov/android/patch912/maven/' }
  maven { url 'https://maven.fpregistry.io/releases' }
  maven { url 'https://jitpack.io' }

}}
```

Se a sua versão do Gradle for 7 ou mais recente, adicione estas linhas ao seu `settings.gradle`.

```groovy
dependencyResolutionManagement {
    repositories {
        ...
        maven { url 'https://repo.combateafraude.com/android/release' }
        maven { url 'https://raw.githubusercontent.com/iProov/android/patch912/maven/' }
        maven { url 'https://maven.fpregistry.io/releases' }
        maven { url 'https://jitpack.io' }
    }
}
```

Adicione suporte ao Java 8 ao seu `build.gradle` arquivo. Ignore isto se o Java 8 estiver ativado.

```groovy
android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
```

Adicione a versão do SDK à seção de dependências no seu `build.gradle` arquivo

```groovy
dependencies {
    implementation 'io.caf.sdk:new-face-authenticator:{version}'
}
```

### Instanciando o SDK

Primeiro, crie um objeto do tipo `FaceAuthenticator`. Este objeto é para você configurar todas as suas regras de negócio:

```java
FaceAuthenticator faceAuthenticator = new FaceAuthenticator.Builder(String mobileToken)
    //veja a tabela abaixo
    .build();
```

#### Método builder

| Parâmetro                                                                                                                                                                                                                                                                                                                                             | Obrigatório                     |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
| <p><code>String mobileToken</code></p><p>Token de uso associado à sua conta Identity (veja como obtê-lo <a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/sdk_integration_documentation.md#2-generating-access-tokens">aqui</a>).</p>                                                                                             | Sim                             |
| <p><code>.setStage(CAFStage stage)</code></p><p>Usado para redirecionar o SDK para o estágio desejado na API da caf. O método recebe como parâmetro um enum <code>CafStage</code> para selecionar o ambiente:</p><ul><li><code>CAFStage.PROD</code> definir ambiente de produção.</li><li><code>CAFStage.BETA</code> definir ambiente beta.</li></ul> | Não. O padrão é `CAFStage.PROD` |
| <p><code>.setFilter(Filter filter)</code></p><p>Usado para alterar o filtro do SDK, que tem as seguintes opções:</p><ul><li><code>Filter.NATURAL</code></li><li><code>Filter.LINE\_DRAWING</code></li></ul>                                                                                                                                           | Não, o padrão é `LINE_DRAWING`  |
| <p><code>.setEnableScreenshots(boolean bool)</code></p><p>Usado para habilitar capturas de tela durante a varredura do SDK. Desativado por padrão por motivos de segurança.</p>                                                                                                                                                                       | Não, o padrão é `false`         |
| <p><code>.setLoadingScreen(boolean bool)</code></p><p>Usado para ativar uma barra de progresso de carregamento padrão durante os eventos de carregamento. Você pode definir sua própria tela de carregamento personalizada em vez disso, usando o <code>onLoading</code> método abaixo.</p>                                                           | Não, o padrão é `false`         |
| <p><code>.setImageUrlExpirationTime(Time time)</code></p><p>Usado para personalizar o tempo de expiração da URL da imagem, que tem as seguintes opções:</p><ul><li><code>Time.THREE\_HOURS</code></li><li><code>Time.THIRTY\_DAYS</code></li></ul>                                                                                                    | Não, o padrão é `null`          |

### Consultando uma política

Para autenticar um usuário, use o `authenticate()` método. Você deve inserir o CPF do usuário, o Context do seu app e um `VerifyAuthenticationListener` objeto.

#### Parâmetros

| Parâmetro                                                                            | Obrigatório |
| ------------------------------------------------------------------------------------ | ----------- |
| <p><code>String personId</code></p><p>CPF do usuário</p>                             | Sim         |
| <p><code>Context context</code></p><p>Context do seu app</p>                         | Sim         |
| <p><code>VerifyAuthenticationListener listener</code></p><p>Listener de resposta</p> | Sim         |

#### Exemplo

```java
faceAuthenticator.authenticate(Context context, String personId, new VerifyAuthenticationListener() {
    @Override
    public void onSuccess(FaceAuthenticatorResult result) {
        
    }

    @Override
    public void onError(FaceAuthenticatorErrorResult errorResult) {
        
    }

    @Override
    public void onCancel() {
        
    }

    @Override
    public void onLoading() {
        
    }

    @Override
    public void onLoaded() {
        
    }
});
```

#### Opções do VerifyAuthenticationListener

| Método      | Descrição                                                                                                                                                  |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `onSuccess` | A execução terminou com sucesso, você deve usar o `resultado` e verificar os resultados do SDK.                                                            |
| `onError`   | A execução terminou com erro, você deve usar o `resultado` e verificar os resultados de erro do SDK.                                                       |
| `onCancel`  | A execução foi cancelada pelo usuário.                                                                                                                     |
| `onLoading` | O SDK está carregando; você pode usar este método para definir uma ação no seu app, por exemplo, um carregamento.                                          |
| `onLoaded`  | O SDK não está mais carregando; você pode usar este método para definir uma ação no seu app, por exemplo, você pode interromper seu carregamento anterior. |

### FaceAuthenticatorResult

#### Sucesso

| Retornar                | Motivo                                                                                                                                                                                                                                                                                                                                                 |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `String signedResponse` | Resposta assinada do servidor da CAF confirmando que a selfie capturada tem um rosto real. Este parâmetro é usado para obter uma camada extra de segurança, verificando se a assinatura da resposta não está quebrada ou se foi causada por interceptação da solicitação. Se estiver quebrada, há uma forte indicação de interceptação da solicitação. |

**Parâmetros do signedResponse**

| Evento       | Descrição                                                                        |
| ------------ | -------------------------------------------------------------------------------- |
| `requestId`  | Identificador da solicitação.                                                    |
| `isAlive`    | Validação de uma pessoa viva, identifica se o usuário passou com sucesso ou não. |
| `isMatch`    | Resultado da validação da correspondência facial.                                |
| `token`      | Token da solicitação.                                                            |
| `userId`     | Identificador do usuário fornecido para a solicitação.                           |
| `imageUrl`   | Link temporário para a imagem, gerado pela nossa API.                            |
| `personId`   | Identificador do usuário fornecido para o SDK.                                   |
| `sdkVersion` | Versão do Sdk em uso.                                                            |
| `iat`        | Expiração do token.                                                              |
| `message`    | Mensagem de retorno.                                                             |

{% hint style="warning" %}
O **isAlive** parâmetro é **MUITO IMPORTANTE**, com base nessa validação, o usuário pode ser orientado a continuar o fluxo ou não. Em caso de `isAlive: true`, ele poderá continuar com a jornada. Se `isAlive: false` , este usuário não é válido e deve ser impedido de continuar sua jornada. Além disso, o **isMatch** parâmetro indica se o Face Match foi bem-sucedido ou não, retornando `isMatch: true` em caso de sucesso e `false` em caso de falha.
{% endhint %}

#### FaceAuthenticationErrorResult

| Retornar              | Motivo                  |
| --------------------- | ----------------------- |
| `String description`  | Descrição do erro.      |
| `ErrorType errorType` | Retorna o tipo do erro. |

**ErrorType**

| tipo                 | Descrição                                                                                                                                                                                                                                                                                    |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CAMERA_PERMISSION`  | <p>Indica que o dispositivo não tem permissão para acessar a câmera.<br>Esse erro normalmente ocorre quando o usuário nega o acesso à câmera ou se o app não tiver as permissões necessárias.</p>                                                                                            |
| `NETWORK_EXCEPTION`  | <p>Indica que ocorreu um erro relacionado à rede.<br>Esse erro pode ocorrer devido a vários problemas de rede, como falta de conexão com a internet, timeouts do servidor ou congestionamento da rede.</p>                                                                                   |
| `SERVER_EXCEPTION`   | Indica que ocorreu uma exceção no lado do servidor.\<br. />Esse erro normalmente é retornado quando há um problema no processamento da solicitação de reconhecimento facial pelo servidor. Isso pode incluir erros do lado do servidor, configurações incorretas ou interrupções do serviço. |
| `TOKEN_EXCEPTION`    | <p>Indica um problema com o token fornecido.<br>Esse erro pode ocorrer se o token de autenticação fornecido for inválido, estiver expirado ou não tiver as permissões necessárias para לבצע tarefas de reconhecimento facial.</p>                                                            |
| `UNSUPPORTED_DEVICE` | <p>Indica que o dispositivo não é compatível.<br>Esse erro pode ocorrer se o hardware ou o software do dispositivo não atender aos requisitos mínimos para a funcionalidade de reconhecimento facial.</p>                                                                                    |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.caf.io/caf-sdk/caf-sdk-pt-br/android/standalone-modules/faceauthenticator.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
