Синхронизация пользовательских данных из Feishu
Feishu / LarkProfessional Edition+Введение
Плагин Feishu / Lark синхронизирует пользователей и отделы организации Feishu с NocoBase. Поддерживаются ручная полная синхронизация и инкрементальные обновления через HTTP callback или соединение Stream.
Перед началом работы
- Установите и включите плагины Feishu / Lark и Синхронизация пользовательских данных.
- Создайте корпоративное приложение на открытой платформе Feishu, см. Аутентификация: Feishu / Lark.
- Выдайте права на чтение контактов и настройте область видимости контактов, как описано ниже.
Права на контакты и область видимости
В разделе Права приложения включите следующие права:
Затем настройте область прав на контакты(какие отделы и сотрудники доступны приложению):
- На странице Конфигурация разработки → Права нажмите Настроить справа от колонки «Доступная область данных» у контакта(при включении права на контакты страница открывается автоматически).
- Выберите отделы и сотрудников, доступных приложению. При первой настройке рекомендуется выбрать всех сотрудников, а после проверки — сузить при необходимости.
- Нажмите ОК для сохранения.
Область прав на контакты и «область доступности приложения»(кто может использовать приложение)— две независимые настройки, не путайте их; на синхронизацию данных влияет только область прав на контакты. Права API определяют, какие поля может читать приложение, а область прав на контакты — какие отделы и пользователей; настроить нужно и то, и другое. Область синхронизации следует области прав; после изменения выполните полную синхронизацию заново. Подписка на события не заменяет права на чтение: при каждом событии NocoBase всё равно запрашивает актуальные данные через API Feishu.
Добавление источника синхронизации Feishu
Перейдите в Пользователи и права → Синхронизация и добавьте источник типа Feishu / Lark:
Сохраните и включите источник, затем нажмите Синхронизировать для первой полной синхронизации.
Выбор способа приема событий
Режим Stream
Режим Stream поддерживает постоянное WebSocket-соединение, инициируемое сервером NocoBase. Публичный адрес обратного вызова, токен и ключ шифрова ния не требуются.
- Выберите режим Stream в NocoBase, сохраните и включите источник.
- На платформе в разделе События и обратные вызовы переключите способ приема на длинное соединение (WebSocket) и подпишитесь на события контактов.
Соединение запускается автоматически при включении источника (с автоматическим переподключением) и обновляется или закрывается при изменении, отключении или удалении источника.
Режим Stream не требует публичного входящего адреса и обратного прокси — подходит для внутрисетевых развёртываний. Статус соединения можно проверить в журналах приложения по строке Feishu stream client.
HTTP callback
Режим HTTP callback принимает события Feishu по адресу обратного вызова NocoBase.
- Выберите HTTP callback в NocoBase и задайте Verification Token и, при необходимости, Encrypt Key — требуется хотя бы один.
- Сохраните источник и скопируйте URL обратного вызова событий из интерфейса.
- На платформе в разде ле События и обратные вызовы → Настройка событий выберите отправку событий на сервер, вставьте URL и подпишитесь на события контактов.
Адрес обратного вызова должен быть доступен для Feishu (в продакшене — HTTPS). При настроенном Encrypt Key содержимое обратных вызовов шифруется.
Без Verification Token или Encrypt Key запросы отклоняются (401). После перевода источника в режим Stream HTTP-эндпоинт закрывается (403).
Поддерживаемые инкрементальные события
Оба способа поддерживают следующие события контактов Feishu:
Пользователи с ролью Root при синхронизации никогда не удаляются.
Синхронизируемые поля
Поля отделов
Поля пользователей
Руководители отделов
Руководители отделов (лидеры) из данных отделов синхронизируются как владельцы отделов в NocoBase: пользователь может руководить несколькими отделами, и руководимый отдел не обязан быть основным. Участвуют только отделы в области видимости. Снятые на стороне Feishu руководители снимаются при следующей синхронизации; вручную измененные в NocoBase руководители могут быть перезаписаны.
Другие поля пользователя Feishu (аватар, должность, табельный номер) в настоящее время не синхронизируются.
Устранение неполадок
- Пустые результаты или отсу тствующие отделы: проверьте права на чтение контактов и наличие отдела в области прав на контакты (настройка описана выше).
- Пустые никнеймы: включите право Получение базовой информации о пользователе (
contact:user.base:readonly) и выполните полную синхронизацию заново. - Пользователи пропускаются: проверьте наличие у пользователя значения выбранного поля идентификатора и его совпадение с аутентификатором.
- HTTP callback возвращает 401: не настроен Verification Token или Encrypt Key, либо проверка токена не прошла; 403: источник переведен в режим Stream.
- Ошибки
redirect_uriили адреса обратного вызова: убедитесь, что адрес на платформе точно совпадает с показанным в NocoBase, включая префикс вложенного пути (APP_PUBLIC_PATH). - Задача синхронизации завершается ошибкой лимита API Feishu: дождитесь снятия ограничения и запустите синхронизацию вручную еще раз.

