¿Qué es FACEIO?
FACEIO es una plataforma de autenticación facial de PixLab ↗ que permite a una aplicación web registrar y autenticar usuarios por su rostro sin exigir contraseñas, códigos OTP ni sensores biométricos dedicados en el flujo de FACEIO. Utiliza una cámara web estándar o la cámara de un teléfono en navegadores modernos compatibles.
La biblioteca del lado del cliente es fio.js. Expone dos métodos principales: enroll() para el registro y authenticate() para el inicio de sesión, además de la utilidad restartSession() para flujos con varias operaciones. FACEIO coordina el flujo de autenticación, mientras que el motor de reconocimiento facial elegido por el propietario de la aplicación realiza la comparación facial y gestiona los hashes biométricos. Tu aplicación recibe una Promise resuelta con el Facial ID y el payload
que hayas asociado durante el registro.
¿Es tu primera vez con FACEIO?
Empieza con la Guía de configuración en 5 minutos para crear tu primera aplicación y obtener su Public ID desde la FACEIO Console ↗.
Integración de la biblioteca fio.js
fio.js funciona en navegadores modernos compatibles con una cámara web estándar o la cámara de un teléfono, sin necesidad de un sensor biométrico dedicado. La biblioteca JavaScript es independiente del framework y puede utilizarse con React, Vue, Angular, Next.js o JavaScript sin framework.
1
Importar fio.js en tu sitio web
Pega el siguiente fragmento antes de la etiqueta de cierre </body> en cualquier página donde quieras ofrecer autenticación facial. La biblioteca se carga desde la
CDN ↗
de FACEIO. El alojamiento propio no es compatible, por lo que las integraciones reciben las actualizaciones compatibles de fio.js desde la CDN de FACEIO.
-
Siempre carga
fio.jsdesde cdn.faceio.net ↗. El alojamiento propio no es compatible. - ¿Prefieres una herramienta de compilación? Instala el paquete NPM oficial ↗.
- Las guías específicas para React, Vue, Angular y Next.js se encuentran en la sección Tutoriales de la comunidad.
2
Crea una instancia de faceIO
Crea una instancia de faceIO() con el Public ID de tu aplicación. Este identificador está disponible en el Administrador de aplicaciones de la FACEIO Console ↗.
Antes de continuar, comprueba que has:
- Creado una aplicación FACEIO y seleccionado un motor de reconocimiento facial desde la FACEIO Console ↗.
- Revisado las opciones de seguridad (política de PIN Code y restricciones de dominio) en la guía de prácticas recomendadas de seguridad.
- Revisado las recomendaciones de privacidad, incluido el manejo de Facial IDs, según la guía de prácticas recomendadas de privacidad.
3 Inicia el Widget
Con fio.js cargado y la instancia faceIO() lista, inicia el proceso de reconocimiento facial llamando a uno de los métodos expuestos por la clase:
Registra un usuario nuevo mediante reconocimiento facial. Es el equivalente sin contraseña de un registro tradicional.
Autentica a un usuario registrado previamente. Es el equivalente sin contraseña de un inicio de sesión tradicional.
Plantilla de referencia
La plantilla HTML incluye una implementación de referencia con ambos métodos y manejo completo de errores.
enroll() - Registrar un usuario nuevo
Inicia el Widget de FACEIO para registrar un usuario nuevo mediante reconocimiento facial. Es el equivalente sin contraseña de un registro tradicional. Si la operación finaliza correctamente, devuelve una Promise resuelta con un objeto
userInfo que contiene el Facial ID único del usuario, la marca de tiempo del registro y estimaciones demográficas de género y edad.
Sintaxis
promise = faceio.enroll({ parameters })
enrol()
register()
record()
userInfo si la operación se completa, o se rechaza con un fioErrCode si falla.
Descripción
Al invocarlo, el Widget de FACEIO solicita el consentimiento del usuario cuando corresponde, pide acceso a la cámara y envía la captura al motor de reconocimiento facial elegido por el propietario de la aplicación.
FACEIO no almacena, gestiona ni accede a hashes biométricos. El motor de reconocimiento facial seleccionado crea y gestiona los hashes biométricos utilizados para la comparación, mientras que tu integración recibe el Facial ID resultante y los datos del registro.
payload permite asociar datos arbitrarios (correo electrónico, userId, nombre, etc.) al usuario registrado. Estos datos se devuelven después de cada autenticación correcta
de ese usuario. El tamaño máximo es de 16 KB. Codifica en Base64 cualquier contenido binario o que no sea ASCII.
Parámetros
Acepta un único objeto opcional. Todas sus propiedades son opcionales:
Valor devuelto
Una Promise que se resuelve con un objeto userInfo si la operación se completa, o se rechaza con un código de error si falla:
Ejemplo
- Guarda el
facialIddevuelto en tu base de datos como clave de autenticación única del usuario. - El
payloadse devuelve sin cambios en cada llamada posterior aauthenticate()para este usuario. - Consulta la plantilla HTML para ver una referencia funcional completa.
authenticate() - Autenticar un usuario
Inicia el Widget de FACEIO para verificar a un usuario registrado previamente. Es el equivalente sin contraseña de un inicio de sesión tradicional. Si la operación finaliza correctamente, devuelve una Promise resuelta con un objeto
userData que contiene el Facial ID del usuario, la marca de tiempo de autenticación y el payload asociado durante el registro.
Sintaxis
promise = faceio.authenticate({ parameters })
auth()
recognize()
identify()
userData si la operación se completa, o se rechaza con un fioErrCode si falla.
Descripción
Al invocarlo, el Widget de FACEIO solicita acceso a la cámara y compara la captura con el índice facial de usuarios registrados en tu aplicación. La duración depende del permiso de cámara, la calidad de imagen, las comprobaciones de liveness, la conexión de red y la configuración del flujo.
El motor de reconocimiento facial seleccionado realiza la comparación facial. FACEIO no almacena, gestiona ni accede a hashes biométricos, y tu integración del lado del cliente trabaja con el resultado de autenticación devuelto.
payload asociado durante enroll() se devuelve sin cambios dentro del objeto userData
resuelto. Valida el facialId devuelto y aplica tus propias reglas de autorización en el servidor antes de crear una sesión en tu sitio web o aplicación web.
Parámetros
Acepta un único objeto opcional. Todas sus propiedades son opcionales:
Valor devuelto
Una Promise que se resuelve con un objeto userData si la operación se completa, o se rechaza con un código de error si falla:
Ejemplo
- Compara el
facialIddevuelto con tu base de datos antes de autorizar la sesión. - El
payloaddel registro, como email o userId, está disponible enuserData.payload. Aun así, valida la sesión en tu backend. - Consulta la plantilla HTML para ver una referencia completa.
restartSession() - Reiniciar la sesión
Reinicia la sesión actual de FACEIO para poder realizar una nueva llamada a
enroll() o
authenticate()
en la misma página sin recargarla por completo. Resulta útil en terminales compartidos, puntos de registro en eventos u otros flujos donde varias personas utilizan la misma sesión del navegador de forma consecutiva.
Sintaxis
boolean = faceio.restartSession()
true cuando la sesión se reinicia correctamente y está lista para una nueva operación; en caso contrario, false.Descripción
Una vez que enroll() o authenticate() se resuelve o se rechaza, la sesión interna de FACEIO queda consumida. Cualquier llamada posterior a uno de estos métodos en la misma instancia faceIO sin reiniciarla se rechazará inmediatamente con fioErrCode.SESSION_IN_PROGRESS.
Al llamar a restartSession() se elimina este estado y la instancia queda lista para otra operación de reconocimiento.
- Quiosco o terminal compartido - Permite que varios usuarios se autentiquen de forma consecutiva en el mismo dispositivo sin recargar la página.
- Flujo de registro seguido de autenticación - Registra a un usuario y autentícalo en la misma página después de reiniciar la sesión.
- Reintento después de un error - Reinicia la sesión después de una operación fallida para permitir otro intento sin actualizar la página.
faceIO. Si has creado varias instancias faceIO (no recomendado), cada una mantiene su propio estado de sesión.Función Premium
La generación dinámica de sesiones está disponible únicamente en los planes Premium. Actualiza tu aplicación desde la FACEIO Console ↗ para utilizar esta función.
Valor devuelto
true - La sesión se reinició y la instancia está lista para una nueva llamada a enroll() o authenticate().false cuando no se pudo crear una sesión nueva.Códigos de error - fioErrCode
Cuando enroll() o authenticate() fallan, la Promise se rechaza con un valor numérico fioErrCode. Gestiona los errores evaluando este valor dentro del controlador .catch(). Para restartSession(), comprueba el valor booleano devuelto (true o false).
Práctica recomendada para el manejo de errores
Implementa el manejo de errores con mensajes claros para el usuario. Utiliza una instrucción switch o una cadena if-else para tratar cada código y orientar al usuario, por ejemplo, ofrecer el registro cuando se devuelve fioErrCode.UNRECOGNIZED_FACE.
Plantilla HTML
Una implementación de referencia con
enroll() y
authenticate()
y manejo de errores. Utilízala como punto de partida para tu integración.
Importante
Sustituye app-public-id por el Public ID real de tu aplicación obtenido en la FACEIO Console ↗.
Plantilla de referencia
Notas de implementación
-
El
enroll()de la línea 31 incluye unpayloadcon datos de ejemplo. Adáptalo a las necesidades de tu sitio web o aplicación web. -
Guarda el
facialIden tu base de datos y asócialo a la cuenta del usuario para las autenticaciones posteriores. - El controlador de errores de la línea 60 cubre los códigos habituales. Adapta los mensajes al tono de tu sitio web o aplicación web.
-
Esta plantilla requiere un servidor HTTP en ejecución.
fio.jsno puede cargarse directamente desde el sistema de archivos local debido a las restricciones de seguridad del navegador. - Revisa las la guía de prácticas recomendadas de seguridad y la guía de prácticas recomendadas de privacidad antes de desplegar en producción.
Tutoriales de la comunidad
Utiliza estas guías aportadas por la comunidad para implementar fio.js con React, Vue, Angular, Next.js o JavaScript sin framework, y consulta ejemplos para proyectos de React Native y Flutter.
Paquete oficial para herramientas de compilación de JavaScript y proyectos basados en frameworks.
Ver en NPMConsulta respuestas, comparte experiencias y contacta con otros desarrolladores de FACEIO.
Abrir el foroGuía sobre inicio de sesión sin contraseña, verificación de edad y detección de liveness en una misma solución.
Ver tutorialCrea un flujo de control de asistencia con FACEIO y JavaScript sin framework.
Ver tutorialCrea con Next.js un chatbot para planificar viajes con autenticación facial.
Ver tutorialAñade reconocimiento facial a una aplicación creada con React y Tailwind CSS.
Ver tutorialTutorial para implementar la autenticación facial de FACEIO en una aplicación Vue.js.
Ver tutorialGuía de freeCodeCamp para añadir autenticación por reconocimiento facial a una aplicación React.
Ver tutorialConsulta patrones modernos de autenticación para aplicaciones web que utilizan reconocimiento facial.
Ver tutorialUna guía detallada sobre la implementación de FACEIO y las prácticas recomendadas.
Ver tutorialCrea un flujo de inicio de sesión con reconocimiento facial y JavaScript sin framework.
Ver tutorialCrea un sistema de control de asistencia basado en el reconocimiento facial de FACEIO.
Ver tutorialComparte un tutorial de implementación de FACEIO con la comunidad de desarrolladores.
Contáctanos