> 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/deprecated-sdks/faceauthenticator-deprecated.md).

# FaceAuthenticator (Obsoleto)

## **Tamanho do SDK** <a href="#vmn3vbemkr4" id="vmn3vbemkr4"></a>

Um máximo de cerca de 3,8 MB, que pode diminuir devido a [estes elementos](https://github.com/combateafraude/public-docs/blob/docs-sdks/android/reduce-sdks-size.md).

## **Analytics** <a href="#id-4pkbv6lub4gk" id="id-4pkbv6lub4gk"></a>

Nossos SDKs, por padrão [coletam informações](https://github.com/combateafraude/public-docs/blob/docs-sdks/analytics.md) sobre o usuário e o ambiente de execução para mapear melhor os fraudadores e entender seus comportamentos. Recomendamos manter essa coleta ativa, pois a única finalidade desses dados é reduzir fraudes, mas, se desejar, você pode desativá-la em **`.setAnalyticsSettings(boolean useAnalytics)`** parâmetro.

## **Permissões em tempo de execução** <a href="#qawqjqi7c84f" id="qawqjqi7c84f"></a>

| Permissão    | Motivo                            | Obrigatório |
| ------------ | --------------------------------- | ----------- |
| **`CAMERA`** | Para capturar a selfie do usuário | Sim         |

## Instanciando o SDK <a href="#txv7gu9vr5cl" id="txv7gu9vr5cl"></a>

Primeiro, crie um objeto do tipo **`FaceAuthenticator`**. Este objeto serve para configurar todas as regras de negócio do SDK:

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

> Todos os parâmetros anotados com `@Nullable` podem receber `null` como valor, o que é útil se você quiser definir apenas um dos parâmetros de um único método.

### **Método do Builder** <a href="#id-8scp8o8duzd8" id="id-8scp8o8duzd8"></a>

| Parâmetro                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Obrigatório                                                                                                                                                                                                                                                                                                                         |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><strong><code>String mobileToken</code></strong></p><p>Token de uso associado à sua conta CAF.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                | Sim.                                                                                                                                                                                                                                                                                                                                |
| <p><strong><code>.setPeopleId(String peopleId)</code></strong></p><p>Identificador do usuário para realizar o facematch. Atualmente, este valor aceita apenas o CPF do usuário.</p>                                                                                                                                                                                                                                                                                                                                                                  | Sim.                                                                                                                                                                                                                                                                                                                                |
| <p><strong><code>.setAnalyticsSettings(boolean useAnalytics)</code></strong></p><p>Ativa/desativa a coleta de dados para <a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/android/deprecated/faceauthenticator.md#_4pkbv6lub4gk">analytics</a>.</p>                                                                                                                                                                                                                                                                             | Não, o padrão é **`true`**                                                                                                                                                                                                                                                                                                          |
| <p><strong><code>.setStabilitySensorSettings(@Nullable SensorStabilitySettings sensorStabilitySettings)</code></strong></p><p>Altera as configurações padrão do sensor de estabilidade. Aplique <strong><code>null</code></strong> se você não quiser usar este sensor.</p>                                                                                                                                                                                                                                                                          | Não. O tempo padrão é 1000 ms e o limiar padrão é 0,7 m/s².                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setCaptureSettings(@Nullable CaptureSettings captureSettings)</code></strong></p><p>Define as configurações de captura. O método aceita instâncias da <strong><code>ImageCapture</code></strong> e <strong><code>VideoCapture</code></strong> classes.</p>                                                                                                                                                                                                                                                                         | Não. O padrão é **`ImageCapture`**                                                                                                                                                                                                                                                                                                  |
| <p><strong><code>.setLayout(@Nullable @LayoutRes Integer layoutId)</code></strong></p><p>Substitui o layout padrão do SDK. Crie um arquivo na pasta layout do seu projeto, copie <a href="https://gist.github.com/MiguelXCruz/030afe3af29cd257457b8931487590b3">este modelo</a> e faça as alterações desejadas.</p>                                                                                                                                                                                                                                  | Não. O padrão é [este](https://gist.github.com/murilofank/6984a34e8a7fc8975283b746809e8b7f)                                                                                                                                                                                                                                         |
| <p><strong><code>.setMask(@DrawableRes Integer greenMask, @DrawableRes Integer whiteMask, @DrawableRes Integer redMask)</code></strong></p><p>Altera as máscaras de captura facial: SUCCESS, NORMAL e FAIL, nessa ordem. Se você usar esta opção, <strong>use máscaras com a mesma área de detecção que o rosto</strong>, esta região é muito importante para o algoritmo capturar.</p>                                                                                                                                                              | <p>Não. Os padrões de máscara são:</p><p><a href="https://gist.github.com/murilofank/c774f56b18975ed6d0929c035b7589b3">Normal</a></p><p><a href="https://gist.github.com/murilofank/be48a6e2812da48bc9d442bf49be0f37">Sucesso</a></p><p><a href="https://gist.github.com/murilofank/e5a6081e4b3baf65345a820dffd63406">Falha</a></p> |
| <p><strong><code>.setStyle(@StyleRes int styleResourceId)</code></strong></p><p>Substitui o estilo padrão do SDK. No <em>styles.xml</em> arquivo do seu projeto, copie <a href="https://gist.github.com/murilofank/3ac0f921435466fd4e0b04d683597a38">este modelo</a> e edite-o.</p>                                                                                                                                                                                                                                                                  | Não. O padrão é [este](https://gist.github.com/murilofank/3ac0f921435466fd4e0b04d683597a38)                                                                                                                                                                                                                                         |
| <p><strong><code>.enableSwitchCameraButton(boolean enable)</code></strong></p><p>Ativa/desativa o botão para o usuário alternar entre a câmera frontal e a traseira.</p>                                                                                                                                                                                                                                                                                                                                                                             | Não. O padrão é **`true`**                                                                                                                                                                                                                                                                                                          |
| <p><strong><code>.setNetworkSettings(int requestTimeout)</code></strong></p><p>Define o <em>tempo limite</em> intervalo para solicitações do SDK.</p>                                                                                                                                                                                                                                                                                                                                                                                                | Não. O padrão é 60 (segundos)                                                                                                                                                                                                                                                                                                       |
| <p><strong><code>.enableGoogleServices(boolean enable)</code></strong></p><p>Permite ativar/desativar recursos do SDK que consomem GoogleServices; não recomendamos desativar os serviços devido à perda de segurança.</p>                                                                                                                                                                                                                                                                                                                           | Não. O padrão é **`true`**                                                                                                                                                                                                                                                                                                          |
| <p><strong><code>.setUseEmulator(boolean use)</code></strong></p><p>Permite o uso de emuladores quando <strong><code>true</code></strong>. Quando <strong><code>true</code></strong>, o modo ADB também é ativado para que o emulador funcione corretamente. Não é recomendado ativar esta opção; use-a apenas para fins de teste.</p>                                                                                                                                                                                                               | Não. O padrão é **`false`**                                                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setUseRoot(boolean use)</code></strong></p><p>Permite o uso de dispositivos com root quando <strong><code>true</code></strong>.</p>                                                                                                                                                                                                                                                                                                                                                                                                | Não. O padrão é **`false`**                                                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setUseDeveloperMode(boolean use)</code></strong></p><p>Permite o uso do modo desenvolvedor quando <strong><code>true</code></strong>. Não é recomendado ativar esta opção; use-a apenas para fins de teste.</p>                                                                                                                                                                                                                                                                                                                    | Não. O padrão é **`false`**                                                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setUseAdb(boolean use)</code></strong></p><p>Ativa o modo de depuração Android Debug Bridge (ADB) quando <strong><code>true</code></strong>. Não é recomendado ativar esta opção; use-a apenas para fins de teste.</p>                                                                                                                                                                                                                                                                                                             | Não. O padrão é **`false`**                                                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setUseDebug(boolean use)</code></strong></p><p>Permite usar o app em modo de depuração quando <strong><code>true</code></strong>. Não é recomendado ativar esta opção; use-a apenas para fins de teste.</p>                                                                                                                                                                                                                                                                                                                        | Não. O padrão é **`false`**                                                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setAudioSettings(boolean use)</code></strong></p><p>Ativa/desativa a reprodução dos áudios do SDK.</p>                                                                                                                                                                                                                                                                                                                                                                                                                             | Não. O padrão é **`true`**                                                                                                                                                                                                                                                                                                          |
| <p><strong><code>.setAudioSettings(Integer audioResId)</code></strong></p><p>Permite personalizar o áudio usado pelo SDK.</p>                                                                                                                                                                                                                                                                                                                                                                                                                        | Não. O padrão é "Registro Facial".                                                                                                                                                                                                                                                                                                  |
| <p><strong><code>.enableBrightnessIncrease(boolean enable)</code></strong></p><p>Ativa/desativa o aumento do brilho do dispositivo ao abrir o SDK.</p>                                                                                                                                                                                                                                                                                                                                                                                               | Não. O padrão é **`true`**                                                                                                                                                                                                                                                                                                          |
| <p><strong><code>.setEyesClosedSettings(boolean enable, double threshold)</code></strong></p><p>Permite personalizar as configurações de validação de olhos abertos do SDK. O método espera como parâmetro enable para ativar ou desativar a validação, e threshold, valor entre 0,0 e 1,0Permite personalizar as configurações de validação de olhos abertos do SDK. O método espera como parâmetro <strong><code>enable</code></strong> para ativar ou desativar a validação, e <strong><code>threshold</code></strong>, valor entre 0,0 e 1,0</p> | Não. O padrão é **`true`** e **`0.5`**                                                                                                                                                                                                                                                                                              |
| <p><strong><code>.setStage(CafStage stage)</code></strong></p><p>Permite escolher o ambiente em que o SDK será executado (produção, beta). O método recebe como parâmetro um enum <strong><code>CafStage</code></strong> para selecionar o ambiente:</p>                                                                                                                                                                                                                                                                                             | Não. O padrão é **`CafStage.PROD`**                                                                                                                                                                                                                                                                                                 |
| **Enum**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | **Descrição**                                                                                                                                                                                                                                                                                                                       |
| **`CafStage.PROD`**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Usará o ambiente de **produção** da Trust Platform para registrar as execuções do SDK.                                                                                                                                                                                                                                              |
| **`CafStage.BETA`**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Usará o ambiente de **beta** da Trust Platform para registrar as execuções do SDK.                                                                                                                                                                                                                                                  |

{% hint style="warning" %}
Cada ambiente (beta e produção) exige seu próprio mobileToken específico, gerado na plataforma Trust do respectivo ambiente.
{% endhint %}

### **Validações de segurança** <a href="#nvbnigm4xtcj" id="nvbnigm4xtcj"></a>

Estamos constantemente tomando ações para tornar o produto cada vez mais seguro, mitigando uma série de ataques observados no processo de captura e, consequentemente, reduzindo ao máximo possível as fraudes de identidade. O SDK possui alguns bloqueios que podem impedir sua execução em determinados contextos. Para desativá-los, você pode usar os métodos conforme mostrado no exemplo abaixo:

```java
FaceAuthenticator.Builder("mobileToken")
    .setUseEmulator(true)
    .setUseRoot(true)
    .setUseDeveloperMode(true)
    .setUseAdb(true)
    .setUseDebug(true)
    .build();
```

{% hint style="warning" %}
Desativar as validações de segurança é recomendado apenas para **fins de teste**. Para publicar seu aplicativo em produção, recomendamos usar as configurações padrão.
{% endhint %}

## **Iniciando a Activity**

Depois de criar o **`FaceAuthenticator`**, inicie o **`FaceAuthenticatorActivity`** passando esse objeto como parâmetro via extra intent:

```java
Intent mIntent = new Intent(context, FaceAuthenticatorActivity.class);
mIntent.putExtra(FaceAuthenticator.PARAMETER_NAME, mFaceAuthenticator);
startActivityForResult(mIntent, REQUEST_CODE);
```

## **Obtendo o resultado**

Para obter o **`FaceAuthenticatorResult`** objeto, que contém as capturas realizadas pelo SDK, sobrescreva o **`onActivityResult`** método na mesma activity em que você iniciou o **`FaceAuthenticatorActivity`**:

```java
@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 <a href="#xzd2cuaudch3" id="xzd2cuaudch3"></a>

| Parâmetro                                                                                                                                                                                                                                                                                                                                                                          | Permite null                                                                                     |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| <p><strong><code>boolean authenticated</code></strong></p><p>Sinalizador que indica se a selfie capturada passou no facematch com a foto armazenada no servidor da CAF e o respectivo CPF inserido pelo usuário.</p>                                                                                                                                                               | Não                                                                                              |
| <p><strong><code>String signedResponse</code></strong></p><p>Resposta assinada do servidor da CAF que realizou o facematch. Use este parâmetro se quiser uma camada extra de segurança, verificando se a assinatura da resposta não foi adulterada ou causada por uma solicitação interceptada. Se estiver adulterada, há uma forte indicação de interceptação da solicitação.</p> | Sim, em caso de erro                                                                             |
| <p><strong><code>String trackingId</code></strong></p><p>Identificador desta execução em nossos servidores. Se possível, salve este campo e envie-o para a nossa API. Assim teremos mais dados sobre como o usuário se comportou durante a execução.</p>                                                                                                                           | Sim, se o usuário definir **`useAnalytics = false`** ou as chamadas de analytics não funcionarem |
| <p><a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/android/sdks-response.md"><strong><code>SDKFailure sdkFailure</code></strong></a></p><p>Objeto que informa o motivo do encerramento do SDK. Para mais informações, veja <a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/android/sdks-response.md">aqui</a>.</p>                     | Sim, em caso de sucesso                                                                          |
| <p><strong><code>lensFacing: Int</code></strong></p><p>Define o lado da câmera que foi usado. Use <strong><code>FaceAuthenticatorResult.LENS\_FACING\_FRONT</code></strong> ou <strong><code>FaceAuthenticatorResult.LENS\_FACING\_FRONT</code></strong> para validar.</p>                                                                                                         | Não                                                                                              |


---

# 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/deprecated-sdks/faceauthenticator-deprecated.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.
