Sincronizar datos de usuario desde Feishu
Introducción
El plugin Feishu / Lark sincroniza usuarios y departamentos de una organización Feishu con NocoBase. Admite sincronización completa bajo demanda y actualizaciones incrementales mediante callback HTTP o conexión Stream.
Antes de empezar
- Instale y active los plugins Feishu / Lark y Sincronización de datos de usuario.
- Cree una aplicación propia en la plataforma abierta de Feishu, ver Autenticación: Feishu / Lark.
- Conceda los permisos de contactos y configure el ámbito de visibilidad como se describe a continuación.
Permisos de contactos y ámbito de visibilidad
En Gestión de permisos de la aplicación, active:
A continuación configure el ámbito de permisos de contactos (qué departamentos y miembros puede ver la aplicación):
- En Configuración de desarrollo → Permisos, pulse Configurar en la columna «Ámbito de datos accesible» (al activar un permiso de contactos se salta aquí automáticamente).
- Seleccione departamentos y miembros; para la configuración inicial se recomienda Todos los miembros y luego restringir si procede.
- Pulse Aceptar para guardar.
Sin Obtener información básica del usuario, la API no devuelve nombres y los apodos sincronizados quedan vacíos. El ámbito de permisos de contactos y el «ámbito de disponibilidad de la aplicación» (quién puede usarla) son dos ajustes independientes; solo el primero afecta a la sincronización. Los permisos de API determinan los campos legibles y el ámbito determina los departamentos y usuarios legibles; deben configurarse ambos. Tras cualquier cambio, vuelva a ejecutar una sincronización completa. La suscripción de eventos no sustituye a los permisos de lectura: en cada evento NocoBase consulta a la API de Feishu los datos más recientes.
Añadir un origen de sincronización Feishu
Entre en Usuarios y permisos → Sincronización y añada un origen de tipo Feishu / Lark:
Guarde y active el origen, luego pulse Sincronizar para la primera sincronización completa.
Elegir el modo de recepción de eventos
Modo Stream
El modo Stream mantiene una conexión WebSocket persistente iniciada por el servidor NocoBase. No requiere URL pública, token ni clave de cifrado.
- Seleccione modo Stream en NocoBase, guarde y active el origen.
- En la plataforma, en Eventos y callbacks, cambie la recepción a conexión larga (WebSocket) y suscríbase a los eventos de contactos.
La conexión se inicia automáticamente al activar el origen (con reconexión automática) y se renueva o cierra al actualizar, desactivar o eliminar el origen.
El modo Stream no necesita dirección pública entrante ni proxy inverso; adecuado para despliegues de intranet. El estado de la conexión puede comprobarse en los registros buscando Feishu stream client.
Callback HTTP
- Seleccione callback HTTP en NocoBase y configure el Verification Token y, opcionalmente, el Encrypt Key; se requiere al menos uno.
- Guarde el origen y copie la URL de callback de eventos mostrada.
- En la plataforma, en Eventos y callbacks → Configuración de eventos, elija el envío al servidor, pegue la URL y suscríbase a los eventos de contactos.
La URL debe ser accesible desde Feishu (HTTPS en producción). Con Encrypt Key el contenido viaja cifrado.
Sin Verification Token o Encrypt Key, las peticiones se rechazan (401). Al cambiar un origen al modo Stream, el endpoint HTTP se cierra (403).
Eventos incrementales admitidos
Los usuarios con rol Root nunca se eliminan por sincronización.
Campos sincronizados
Campos de departamento
Campos de usuario
Responsables de departamento
Los responsables (líderes) se sincronizan como propietarios del departamento en NocoBase: un usuario puede ser responsable de varios departamentos y el departamento responsable no tiene por qué ser el principal. Solo participan los departamentos dentro del ámbito. Los responsables retirados en Feishu se retiran en la siguiente sincronización; los cambios manuales pueden sobrescribirse.
Otros campos como avatar, cargo o número de empleado no se sincronizan actualmente.
Resolución de problemas
- Resultados vacíos o departamentos ausentes: revise permisos de contactos y ámbito de visibilidad.
- Apodos vacíos: active Obtener información básica del usuario (
contact:user.base:readonly) y vuelva a sincronizar. - Usuarios omitidos: compruebe que tengan valor del campo identificador y que coincida con el autenticador.
- Callback HTTP 401: falta o falla Verification Token / Encrypt Key; 403: el origen pasó a modo Stream.
- Errores de
redirect_urio URL de callback: la URL de la plataforma debe coincidir exactamente con la mostrada en NocoBase (incluido el prefijoAPP_PUBLIC_PATH). - Tarea fallida por límite de frecuencia de la API: espere a que se levante el límite y ejecute manualmente de nuevo.

