Sincronizar dados de usuário do Feishu
Introdução
O plugin Feishu / Lark sincroniza usuários e departamentos de uma organização Feishu com o NocoBase. Suporta sincronização completa sob demanda e atualizações incrementais via callback HTTP ou conexão Stream.
Antes de começar
- Instale e ative os plugins Feishu / Lark e Sincronização de dados de usuário.
- Crie um aplicativo interno na plataforma aberta do Feishu, veja Autenticação: Feishu / Lark.
- Conceda as permissões de contatos e configure o escopo de visibilidade conforme abaixo.
Permissões de contatos e escopo de visibilidade
Em Gerenciamento de permissões do aplicativo, ative:
Em seguida configure o escopo de permissões de contatos (departamentos e membros acessíveis):
- Em Configuração de desenvolvimento → Permissões, clique em Configurar na coluna "Escopo de dados acessível" (ativar uma permissão de contatos leva aqui automaticamente).
- Selecione departamentos e membros; recomenda-se Todos os membros no início e restringir depois.
- Clique em OK para salvar.
Sem Obter informações básicas do usuário, a API não retorna nomes e os apelidos sincronizados ficam vazios. O escopo de permissões de contatos e a "disponibilidade do aplicativo" (quem pode usá-lo) são configurações independentes; apenas a primeira afeta a sincronização. Permissões de API definem os campos legíveis; o escopo define departamentos e usuários legíveis. Configure ambos e rode uma sincronização completa após alterações. A assinatura de eventos não substitui permissões de leitura: a cada evento o NocoBase consulta a API do Feishu.
Adicionar fonte de sincronização Feishu
Abra Usuários e permissões → Sincronização e adicione uma fonte do tipo Feishu / Lark:
Salve e ative a fonte, depois clique em Sincronizar para a primeira sincronização completa.
Escolher o modo de recebimento
Modo Stream
O modo Stream mantém uma conexão WebSocket persistente iniciada pelo servidor NocoBase. Sem URL pública, token ou chave de criptografia.
- Selecione modo Stream no NocoBase, salve e ative a fonte.
- Na plataforma, em Eventos e callbacks, mude o recebimento para conexão longa (WebSocket) e assine os eventos de contatos.
A conexão inicia automaticamente ao ativar a fonte (com reconexão automática) e é atualizada ou encerrada conforme o ciclo da fonte.
O modo Stream não exige endereço público de entrada nem proxy reverso — adequado para implantações internas. Verifique a conexão nos logs buscando Feishu stream client.
Callback HTTP
- Selecione callback HTTP e configure o Verification Token e, opcionalmente, o Encrypt Key — pelo menos um é obrigatório.
- Salve a fonte e copie a URL de callback de eventos exibida.
- Na plataforma, em Eventos e callbacks → Configuração de eventos, escolha o envio ao servidor, cole a URL e assine os eventos de contatos.
A URL deve ser acessível ao Feishu (HTTPS em produção). Com Encrypt Key o conteúdo é criptografado.
Sem Verification Token ou Encrypt Key as requisições são recusadas (401). Fonte migrada para modo Stream fecha o endpoint HTTP (403).
Eventos incrementais suportados
Usuários com papel Root nunca são excluídos pela sincronização.
Campos sincronizados
Campos de departamento
Campos de usuário
Responsáveis de departamento
Responsáveis (líderes) dos dados de departamento são sincronizados como proprietários no NocoBase: um usuário pode responder por vários departamentos, e o departamento sob sua responsabilidade não precisa ser o principal. Apenas departamentos no escopo participam. Responsáveis removidos no Feishu são removidos na próxima sincronização; alterações manuais podem ser sobrescritas.
Outros campos como avatar, cargo e matrícula não são sincronizados atualmente.
Solução de problemas
- Resultados vazios ou departamentos ausentes: verifique permissões de contatos e escopo.
- Apelidos vazios: ative Obter informações básicas do usuário (
contact:user.base:readonly) e sincronize novamente. - Usuários ignorados: confira o valor do identificador e a coincidência com o autenticador.
- Callback HTTP 401: Verification Token / Encrypt Key ausentes ou incorretos; 403: fonte mudou para modo Stream.
- Erros de
redirect_uriou URL de callback: a URL na plataforma deve ser idêntica à exibida no NocoBase (incluindo o prefixoAPP_PUBLIC_PATH). - Falha por limite de frequência da API: aguarde o limite acabar e execute novamente.

