Implementação
O método startFaceRecon abre o fluxo nativo de prova de vida, envia a imagem capturada para a API de Reconhecimento facial da QI Tech e devolve a chave da imagem processada.
Pré-requisito: obtendo o Client Session Key
O método startFaceRecon exige um clientSessionKey. Essa chave é temporária e deve ser gerada no seu backend por meio de uma requisição server-to-server para a nossa API, antes de chamar o método do SDK.
Endpoint
| Ambiente | URL |
|---|---|
| Sandbox | https://api.sandbox.zaig.com.br/face_recognition/client_session |
| Produção | https://api.zaig.com.br/face_recognition/client_session |
Requisição
Method: POST
Headers:
{
"Authorization": "YOUR_FACE_RECON_API_KEY"
}
Body (Opcional, mas recomendado):
{
"user_id": "unique_user_identifier"
}
Importante: O campo
user_idé altamente recomendado para medidas de segurança e antifraude. Use o CPF do cliente caso tenha acesso a essa informação.
Resposta
A resposta bem-sucedida conterá o client_session_key que deve ser passado para o método startFaceRecon.
{
"client_session_key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
A API Key de Reconhecimento facial nunca deve ser embarcada no aplicativo. A requisição acima deve partir exclusivamente do seu backend.
Assinatura do método
Future<FaceReconReturnValues> startFaceRecon(
CaaSEnvironment environment,
String clientSessionKey, {
FaceReconOptions? options,
})
Os dois primeiros parâmetros são posicionais e obrigatórios. As customizações são opcionais e passadas pelo parâmetro nomeado options, descrito em O objeto FaceReconOptions.
Exemplo completo
import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:flutter_kyc_qitech/flutter_kyc_qitech.dart';
final _qitechFlutterKycPlugin = FlutterKycQitech();
// Etapa 1: obter o clientSessionKey por meio do seu backend
Future<String?> fetchClientSessionKey() async {
final response = await http.post(
Uri.parse('<FACE_RECON_API_URL>'),
headers: {
HttpHeaders.authorizationHeader: '<API_KEY>',
HttpHeaders.contentTypeHeader: 'application/json',
},
body: jsonEncode({'user_id': '<USER_IDENTIFICATION>'}),
);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
return data['client_session_key'] as String?;
}
return null;
}
// Etapa 2: iniciar o SDK com a chave obtida
Future<void> startFaceRecon() async {
final clientSessionKey = await fetchClientSessionKey();
if (clientSessionKey == null) {
print('Failed to fetch clientSessionKey');
return;
}
try {
final result = await _qitechFlutterKycPlugin.startFaceRecon(
CaaSEnvironment.sandbox,
clientSessionKey,
options: FaceReconOptions(
sessionId: '<SESSION_ID>',
documentNumber: '111.111.111-11',
fontColor: '#FFFFFF',
backgroundColor: '#000000',
fontFamily: CaaSFontFamily.futura,
showIntroductionScreens: true,
showSuccessScreen: true,
showInvalidTokenScreen: true,
audioConfiguration: FaceReconAudioConfiguration.enable,
onboardingTextConfiguration: OnboardingTextConfiguration(
onboardingTitle: 'Conselhos relevantes',
onboardingFirstLabel: 'Esteja com o rosto visível',
onboardingSecondLabel: 'Encaixe seu rosto no oval',
onboardingThirdLabel: 'Retire acessórios que cubram o rosto',
),
logLevel: CaaSLogLevel.debug,
),
);
print('Image key: ${result.imageKey}');
print('Device Scan Session Id: ${result.deviceScanSessionId}');
} on FaceReconException catch (e) {
print('Error executing FaceRecon:');
print('Status: ${e.statusCode}');
print('Reason: ${e.reason}');
print('Description: ${e.description}');
}
}
Habilite o suporte às orientações Portrait e Landscape Right em sua aplicação para o funcionamento correto do SDK nativo de iOS.
Aplicativo de exemplo
O repositório do plugin contém um aplicativo de exemplo pronto para execução, em flutter_kyc_qitech/example, que demonstra o uso dos três SDKs. Para executá-lo, crie um arquivo .env na pasta example com as credenciais abaixo e rode flutter pub get seguido de flutter run com um dispositivo físico conectado:
FACERECON_API_URL_SANDBOX=''
FACERECON_API_KEY_SANDBOX=''
OCR_MOBILE_TOKEN_SANDBOX=''
DEVICE_SCAN_API_URL_SANDBOX=''
DEVICE_SCAN_API_KEY_SANDBOX=''
Caso ainda não tenha recebido as suas credenciais, entre em contato com o suporte.caas@qitech.com.br.