Skip to main content

Crear un ZelfProof

Aprende cómo crear ZelfProofs para tus aplicaciones.

Resumen

Crear un ZelfProof implica capturar datos faciales, procesarlos a través de nuestros algoritmos que preservan la privacidad, y generar una prueba criptográfica que puede ser usada para autenticación.

Implementación Básica

JavaScript/TypeScript

import { ZelfSDK } from '@zelf/sdk';

const zelf = new ZelfSDK({
apiKey: 'your-api-key',
environment: 'production' // or 'sandbox'
});

// Crear un nuevo ZelfProof
const createZelfProof = async () => {
try {
const result = await zelf.createProof({
userId: 'unique-user-id',
metadata: {
// Metadatos opcionales
application: 'my-app',
purpose: 'authentication'
},
options: {
livenessDetection: true,
qualityThreshold: 0.8
}
});

console.log('ZelfProof creado:', result.proofId);
return result;
} catch (error) {
console.error('Error creando ZelfProof:', error);
}
};

React Component

import React, { useState } from 'react';
import { ZelfProofCreator } from '@zelf/react-sdk';

function CreateProofComponent() {
const [proof, setProof] = useState(null);
const [loading, setLoading] = useState(false);

const handleCreateProof = async (result) => {
if (result.success) {
setProof(result.proof);
console.log('ZelfProof creado exitosamente');
} else {
console.error('Error al crear ZelfProof:', result.error);
}
};

return (
<div>
<ZelfProofCreator
onComplete={handleCreateProof}
onError={(error) => console.error(error)}
options={{
livenessDetection: true,
qualityThreshold: 0.8
}}
/>
{proof && (
<div>
<h3>¡ZelfProof Creado!</h3>
<p>ID de Prueba: {proof.id}</p>
</div>
)}
</div>
);
}

Configuración Avanzada

Opciones Personalizadas

const advancedOptions = {
livenessDetection: {
enabled: true,
threshold: 0.8,
timeout: 30000
},
quality: {
minResolution: { width: 640, height: 480 },
maxBlur: 0.3,
minBrightness: 0.4
},
security: {
encryptionLevel: 'high',
keyDerivation: 'pbkdf2',
iterations: 100000
}
};

const result = await zelf.createProof({
userId: 'user-123',
options: advancedOptions
});

Manejo de Metadatos

const metadata = {
// Información del usuario
userId: 'user-123',
email: 'user@example.com',

// Contexto de la aplicación
application: 'my-wallet-app',
version: '1.0.0',

// Contexto de seguridad
purpose: 'wallet-access',
permissions: ['read', 'write'],

// Datos personalizados
custom: {
department: 'engineering',
role: 'developer'
}
};

const result = await zelf.createProof({
userId: 'user-123',
metadata: metadata
});

Manejo de Errores

Escenarios de Error Comunes

try {
const result = await zelf.createProof({
userId: 'user-123'
});
} catch (error) {
switch (error.code) {
case 'CAMERA_ACCESS_DENIED':
console.log('Se requiere acceso a la cámara');
break;
case 'LIVENESS_DETECTION_FAILED':
console.log('Por favor asegúrate de ser una persona real');
break;
case 'QUALITY_THRESHOLD_NOT_MET':
console.log('Por favor mejora la iluminación y posición de la cámara');
break;
case 'NETWORK_ERROR':
console.log('La conexión de red falló');
break;
case 'INVALID_USER_ID':
console.log('El ID de usuario es requerido y debe ser único');
break;
default:
console.log('Error inesperado:', error.message);
}
}

Mejores Prácticas

1. Experiencia de Usuario

  • Proporciona instrucciones claras a los usuarios
  • Muestra indicadores de progreso durante el procesamiento
  • Maneja errores con gracia con mensajes útiles
  • Prueba en varias condiciones de iluminación

2. Seguridad

  • Siempre habilita la detección de vida para producción
  • Usa umbrales de calidad apropiados
  • Almacena pruebas de forma segura
  • Implementa manejo de errores adecuado

3. Rendimiento

  • Optimiza la configuración de la cámara para tu caso de uso
  • Considera capacidades offline
  • Implementa estados de carga apropiados
  • Cachea pruebas cuando sea apropiado

Pruebas

Entorno Sandbox

const zelf = new ZelfSDK({
apiKey: 'sandbox-api-key',
environment: 'sandbox'
});

// Probar con datos simulados
const testResult = await zelf.createProof({
userId: 'test-user',
testMode: true
});

Aseguramiento de Calidad

// Probar diferentes escenarios
const testScenarios = [
{ lighting: 'low', quality: 'poor' },
{ lighting: 'normal', quality: 'good' },
{ lighting: 'bright', quality: 'excellent' }
];

for (const scenario of testScenarios) {
const result = await zelf.createProof({
userId: `test-${scenario.lighting}`,
options: {
quality: scenario.quality
}
});

console.log(`Prueba ${scenario.lighting}:`, result.success);
}