Revalidação Silenciosa
Utiliza o motor da Revalidação Silenciosa, que analisa o contexto comportamental do usuário no efeito de rede Unico, e entrega o sinal de confiança da transação corrente. Ou seja, entregamos o nível de confiança de ser o usuário esperado na transação.
Versão mínima: 4.62.0
| Atributo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
externalUserId | String | ✅ | Identificador do usuário no seu sistema. Automaticamente hasheado com SHA-256 antes da transmissão, nunca enviado em texto plano. |
Passo 1 — Implemente initializeSDK no código nativo
O initializeSDK não é exposto no Dart. Ele precisa rodar antes de a engine do Flutter iniciar, então você o chama no código nativo do seu app — Application.onCreate no Android e application(_:didFinishLaunchingWithOptions:) no iOS.
UnicoSDK.initializeSDK deve ser chamado o mais cedo possível durante a inicialização do app. Chamá-lo mais tarde reduz o tempo de processamento em segundo plano e aumenta a chance de respostas de autenticação inconclusivas.
- Android
- iOS
import android.app.Application
import com.acesso.acessobio_android.onboarding.UnicoSDK
import com.acesso.acessobio_android.onboarding.models.Environment
import com.acesso.acessobio_android.onboarding.models.UnicoSDKConfig
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
UnicoSDK.initializeSDK(
this,
UnicoSDKConfig(
sdkKey = "your_sdk_key",
bundleId = "your_bundle_id",
environment = Environment.UAT
)
)
}
}
Registre a classe em android/app/src/main/AndroidManifest.xml:
<application android:name=".MainApplication">
O plugin expõe o SDK nativo de captura para a sua aplicação, então o UnicoSDK já está no seu compile classpath — nenhuma dependência extra é necessária em android/app/build.gradle.
import AcessoBio
import Flutter
import UIKit
@main
class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
UnicoSDK.initializeSDK(config: YourUnicoConfig(), environment: .UAT)
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
O config é um AcessoBioConfigDataSource — a sdkKey vem do getHostKey() e o bundle do getBundleIdentifier():
final class YourUnicoConfig: NSObject, AcessoBioConfigDataSource {
func getBundleIdentifier() -> String { "your_bundle_id" }
func getHostKey() -> String { "your_sdk_key" }
}
Se o environment for omitido, o padrão é produção.
Passo 2 — Implemente startSilentValidation
Depois do initializeSDK, associe a coleta já em andamento ao usuário identificado chamando startSilentValidation com um UnicoCheckPrepareInfo contendo o externalUserId.
import 'package:unico_check/unico_check.dart';
try {
await UnicoSilentAuthDefault().startSilentValidation(
UnicoCheckPrepareInfo(externalUserId: 'external_user_id'),
);
} on UnicoError catch (error) {
// error.code, error.description, error.info
}
O Future retornado é completado quando a validação inicia com sucesso, e lança UnicoError em caso de falha.
Se a validação acontecer no início do fluxo, por exemplo no login, aguarde o Future ser completado antes de avançar para o Passo 3.
| Código | Significado |
|---|---|
75001 | SDK não inicializado. O initializeSDK não foi chamado, ainda não terminou, ou falhou. |
75000 | Falha genérica na coleta. |
O UnicoError.info carrega a etapa do fluxo que falhou. Ele é fornecido no iOS e é sempre nulo no Android.
Passo 3 — Crie o processo e autentique
Com a validação em andamento, crie o processo de verificação para concluir a autenticação. Veja Referência da API ▸ API ▸ Criar Processo.
Inclua o mesmo externalUserId enviado no UnicoCheckPrepareInfo do Passo 2 no corpo da requisição — é isso que permite ao backend correlacionar a criação do processo com a validação já em andamento.
curl -X POST https://api.id.unico.app/processes/v1 \
-H "Authorization: Bearer $TOKEN" \
-H "APIKEY: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": {
"duiType": 1,
"code": "12345678909",
"name": "Luke Skywalker",
"gender": "M",
"birthDate": "2000-05-20",
"email": "[email protected]",
"phone": "5519725570707"
},
"useCase": "Onboarding",
"externalUserId": "external_user_id"
}'
A resposta inclui o campo silentAuth.result com o resultado da autenticação:
{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"silentAuth": {
"result": "yes"
}
}
| Campo | Tipo | Descrição |
|---|---|---|
silentAuth.result | string | yes ou no — veja os valores possíveis abaixo. |
silentAuth.result — valores possíveis
| Valor | Significado |
|---|---|
yes | Autenticação aprovada, usuário reconhecido com confiança suficiente, nenhuma captura adicional necessária. |
no | Dados insuficientes para aprovar silenciosamente. É recomendado autenticar via biometria (selfie) ou outro método alternativo. |