Synchroniser les données utilisateur depuis Feishu
Introduction
Le plugin Feishu / Lark synchronise les utilisateurs et départements d'une organisation Feishu vers NocoBase. Synchronisation complète à la demande et mises à jour incrémentales via callback HTTP ou connexion Stream.
Avant de commencer
- Installez et activez les plugins Feishu / Lark et Synchronisation des données utilisateur.
- Créez une application interne sur la plateforme ouverte Feishu, voir Authentification : Feishu / Lark.
- Accordez les permissions de contacts et configurez le périmètre de visibilité comme décrit ci-dessous.
Permissions de contacts et périmètre de visibilité
Dans Gestion des permissions de l'application, activez :
Configurez ensuite le périmètre de permissions de contacts (départements et membres accessibles) :
- Dans Configuration développement → Permissions, cliquez sur Configurer dans la colonne « Périmètre de données accessible » (l'activation d'une permission de contacts y mène automatiquement).
- Choisissez les départements et membres ; recommandé : Tous les membres au départ, puis restreindre si besoin.
- Cliquez sur OK.
Sans Obtenir les informations de base de l'utilisateur, l'API ne renvoie pas les noms et les surnoms synchronisés restent vides. Le périmètre de permissions de contacts et la « disponibilité de l'application » (qui peut l'utiliser) sont deux réglages indépendants ; seul le premier affecte la synchronisation. Les permissions d'API déterminent les champs lisibles, le périmètre les départements et utilisateurs lisibles ; configurez les deux. Après modification, relancez une synchronisation complète. L'abonnement aux événements ne remplace pas les permissions de lecture : à chaque événement, NocoBase interroge l'API Feishu.
Ajouter une source de synchronisation Feishu
Dans Utilisateurs et permissions → Synchronisation, ajoutez une source de type Feishu / Lark :
Enregistrez et activez la source, puis cliquez Synchroniser pour la première synchronisation complète.
Choisir le mode de réception
Mode Stream
Le mode Stream maintient une connexion WebSocket initiée par le serveur NocoBase. Aucune URL publique, token ni clé de chiffrement requis.
- Sélectionnez mode Stream dans NocoBase, enregistrez et activez.
- Sur la plateforme, dans Événements et callbacks, passez la réception en connexion longue (WebSocket) et abonnez-vous aux événements de contacts.
La connexion démarre automatiquement (reconnexion automatique) et se renouvelle ou se ferme selon le cycle de vie de la source.
Le mode Stream ne nécessite ni adresse entrante publique ni proxy inverse ; adapté aux déploiements intranet. Vérifiez la connexion dans les journaux avec Feishu stream client.
Callback HTTP
- Sélectionnez callback HTTP et configurez le Verification Token et éventuellement l'Encrypt Key — au moins un requis.
- Enregistrez et copiez l'URL de callback d'événements affichée.
- Sur la plateforme, dans Événements et callbacks → Configuration des événements, choisissez l'envoi au serveur, collez l'URL et abonnez-vous aux événements de contacts.
L'URL doit être joignable par Feishu (HTTPS en production). Avec Encrypt Key, le contenu est chiffré.
Sans Verification Token ni Encrypt Key, les requêtes sont rejetées (401). Une source passée en mode Stream ferme le endpoint HTTP (403).
Événements incrémentaux pris en charge
Les utilisateurs avec le rôle Root ne sont jamais supprimés par la synchronisation.
Champs synchronisés
Champs de département
Champs d'utilisateur
Responsables de département
Les responsables issus des données de département sont synchronisés comme propriétaires : un utilisateur peut diriger plusieurs départements, pas nécessairement le sien. Seuls les départements du périmètre participent. Un responsable retiré côté Feishu l'est à la prochaine synchronisation ; les modifications manuelles peuvent être écrasées.
Avatar, poste, matricule et autres champs ne sont pas synchronisés actuellement.
Dépannage
- Résultats vides ou départements manquants : vérifiez permissions et périmètre.
- Surnoms vides : activez Obtenir les informations de base de l'utilisateur (
contact:user.base:readonly) et resynchronisez. - Utilisateurs ignorés : valeur d'identifiant manquante ou incohérence avec l'authentificateur.
- Callback HTTP 401 : Verification Token / Encrypt Key absents ou incorrects ; 403 : source passée en mode Stream.
- Erreurs
redirect_uriou d'URL de callback : correspondance exacte avec l'URL affichée par NocoBase (préfixeAPP_PUBLIC_PATHinclus). - Échec par limite de fréquence API : attendez la levée de la limite et relancez manuellement.

