Benutzerdaten aus Feishu synchronisieren
Einführung
Das Feishu / Lark Plugin synchronisiert Benutzer und Abteilungen einer Feishu-Organisation nach NocoBase. Es unterstützt die vollständige Synchronisierung auf Anforderung sowie inkrementelle Aktualisierungen per HTTP-Callback oder Stream-Verbindung.
Vorbereitung
- Installieren und aktivieren Sie die Plugins Feishu / Lark und Benutzerdatensynchronisierung.
- Erstellen Sie eine unternehmensinterne App auf der Feishu Open Platform, siehe Authentifizierung: Feishu / Lark.
- Aktivieren Sie die Kontakt-Berechtigungen und konfigurieren Sie den Sichtbarkeitsbereich wie unten beschrieben.
Kontakt-Berechtigungen und Sichtbarkeitsbereich
Aktivieren Sie unter Berechtigungen der App die folgenden Rechte:
Konfigurieren Sie anschließend den Berechtigungsbereich für Kontakte (welche Abteilungen und Mitglieder die App sehen darf):
- Klicken Sie auf der Seite Entwicklungskonfiguration → Berechtigungen rechts in der Spalte „Zugänglicher Datenbereich" auf Konfigurieren (beim Aktivieren einer Kontakt-Berechtigung wird automatisch dorthin gesprungen).
- Wählen Sie die Abteilungen und Mitglieder; für die Ersteinrichtung empfiehlt sich Alle Mitglieder, danach bei Bedarf eingrenzen.
- Klicken Sie auf OK.
Ohne Benutzergrunddaten abrufen liefert die API keine Namen und die synchronisierten Spitznamen bleiben leer. Der Berechtigungsbereich für Kontakte und die „Verfügbarkeitsbereich der App" (wer die App nutzen darf) sind zwei unabhängige Einstellungen — nur ersterer beeinflusst die Synchronisierung. API-Berechtigungen bestimmen die lesbaren Felder, der Berechtigungsbereich die lesbaren Abteilungen und Benutzer; beides ist zu konfigurieren. Nach Änderungen eine vollständige Synchronisierung erneut ausführen. Event-Abonnement ersetzt keine Leseberechtigungen: NocoBase ruft bei jedem Event die aktuellen Daten über die Feishu-API ab.
Feishu-Sync-Quelle hinzufügen
Öffnen Sie Benutzer & Berechtigungen → Synchronisierung und fügen Sie eine Quelle vom Typ Feishu / Lark hinzu:
Speichern und aktivieren Sie die Quelle und klicken Sie auf Synchronisieren für die erste vollständige Synchronisierung.
Wahl des Ereignis-Empfangsmodus
Stream-Modus
Der Stream-Modus hält eine dauerhafte WebSocket-Verbindung, die vom NocoBase-Server initiiert wird. Keine öffentliche Callback-URL, kein Token, kein Verschlüsselungsschlüssel.
- Wählen Sie in NocoBase Stream-Modus, speichern und aktivieren Sie die Quelle.
- Stellen Sie auf der Plattform unter Ereignisse & Callbacks den Empfang auf Long Connection (WebSocket) um und abonnieren Sie die Kontakt-Ereignisse.
Die Verbindung startet automatisch beim Aktivieren (mit automatischer Wiederverbindung) und wird bei Änderung, Deaktivierung oder Löschung der Quelle aktualisiert oder geschlossen.
Der Stream-Modus benötigt keine öffentliche eingehende Adresse und keinen Reverse-Proxy — geeignet für Intranet-Installationen. Der Verbindungsstatus ist in den Anwendungslogs unter Feishu stream client prüfbar.
HTTP-Callback
- Wählen Sie in NocoBase HTTP-Callback und konfigurieren Sie Verification Token und optional Encrypt Key — mindestens eines ist erforderlich.
- Speichern Sie die Quelle und kopieren Sie die angezeigte Ereignis-Callback-URL.
- Konfigurieren Sie auf der Plattform unter Ereignisse & Callbacks → Ereigniskonfiguration den Empfang per Server-Push, fügen Sie die URL ein und abonnieren Sie die Kontakt-Ereignisse.
Die Callback-URL muss von Feishu erreichbar sein (in Produktion HTTPS). Mit Encrypt Key werden Callback-Inhalte verschlüsselt.
Ohne Verification Token oder Encrypt Key werden Callback-Anfragen abgelehnt (401). Nach Umstellung einer Quelle auf den Stream-Modus wird der HTTP-Endpunkt geschlossen (403).
Unterstützte inkrementelle Ereignisse
Benutzer mit der Root-Rolle werden durch die Synchronisierung nie gelöscht.
Synchronisierte Felder
Abteilungsfelder
Benutzerfelder
Abteilungsleiter
Abteilungsleiter aus den Abteilungsdaten werden als Abteilungsverantwortliche synchronisiert: Ein Benutzer kann mehrere Abteilungen leiten, und eine geleitete Abteilung muss nicht die Hauptabteilung sein. Es werden nur Abteilungen im Sichtbarkeitsbereich berücksichtigt. Entfernte Leiter werden bei der nächsten Synchronisierung entfernt; manuell in NocoBase geänderte Leiter können überschrieben werden.
Andere Feishu-Benutzerfelder wie Avatar, Position und Personalnummer werden derzeit nicht synchronisiert.
Fehlerbehebung
- Leere Ergebnisse oder fehlende Abteilungen: Kontakt-Berechtigungen und Sichtbarkeitsbereich prüfen.
- Leere Spitznamen: Benutzergrunddaten abrufen (
contact:user.base:readonly) aktivieren und vollständig synchronisieren. - Übersprungene Benutzer: Vorhandensein des Kennzeichen-Werts und Übereinstimmung mit dem Authenticator prüfen.
- HTTP-Callback 401: Verification Token / Encrypt Key fehlen oder sind falsch; 403: Quelle wurde in den Stream-Modus umgestellt.
- Fehler zu
redirect_urioder Callback-URL: Adresse auf der Plattform muss exakt der in NocoBase angezeigten entsprechen (einschließlichAPP_PUBLIC_PATH-Präfix). - Sync-Aufgabe scheitert an API-Rate-Limit: Limit abwarten und Synchronisierung manuell erneut ausführen.

