defineConnectionProvider({ type: 'oauth', ... }) müssen nicht migriert werden.
defineConnectionProvider
Legen Sie fest, wie die Verbindungen Ihrer App bezogen werden
defineConnectionProvider
Legen Sie fest, wie die Verbindungen Ihrer App bezogen werden
Ein Verbindungsanbieter beschreibt den OAuth-Handshake, den Ihre App benötigt. Der Benutzer klickt in den Einstellungen Ihrer App auf “Verbindung hinzufügen”, schließt den Zustimmungsbildschirm des Anbieters ab, und in seinem Arbeitsbereich wird eine Hauptpunkte:
ConnectedAccount-Zeile erstellt.Eine funktionierende Einrichtung benötigt zwei Dateien — den Verbindungsanbieter und eine passende serverVariables-Deklaration in defineApplication, die die OAuth-Client-Anmeldedaten enthält.src/connection-providers/linear-connection.ts
src/application.config.ts
nameist die eindeutige Bezeichner-Zeichenfolge, die inlistConnections({ providerName })verwendet wird (kebab-case, muss^[a-z][a-z0-9-]*$entsprechen).displayNamewird im Einstellungs-Tab der jeweiligen App und in der KI-Toolliste angezeigt.clientIdVariable/clientSecretVariablesind Namen, keine Werte — sie müssen den indefineApplication.serverVariablesdeklarierten Schlüsseln entsprechen. Die tatsächlichenclient_idundclient_secretwerden vom Serveradministrator über die App-Registrierungsoberfläche eingegeben und niemals in Ihr Repository eingecheckt.- Verwenden Sie
serverVariables(nichtapplicationVariables) — OAuth-Anmeldedaten gelten serverweit und es gibt eine OAuth-App pro Twenty-Server. - Solange beide
serverVariablesnicht ausgefüllt sind, zeigt der Einstellungs-Tab pro App den Hinweis “Benötigt Server-Admin” an und der Button “Verbindung hinzufügen” ist deaktiviert. type: 'oauth'ist derzeit der einzige unterstützte Wert. Der Diskriminator ist vorwärtskompatibel: zukünftige Typen ('pat','api-key', …) werden neue Unterkonfigurationsblöcke nebenoauthhinzufügen.
Beim Verbindungsaufbau eine Logikfunktion ausführen
Reagiere in dem Moment, in dem eine Verbindung hergestellt wird
Beim Verbindungsaufbau eine Logikfunktion ausführen
Reagiere in dem Moment, in dem eine Verbindung hergestellt wird
Einige Anbieter liefern dir beim Verbindungsaufbau Daten, die du persistieren musst, bevor die Verbindung nutzbar ist – das klassische Beispiel ist Slack, bei dem die OAuth-Antwort die Der Hook wird asynchron im verbindenden Workspace ausgeführt (er wird in eine Warteschlange gestellt, nicht abgewartet), sodass ein langsamer oder fehlerhafter Hook niemals den OAuth-Callback blockiert oder unterbricht – mache ihn idempotent und lass ihn seine eigenen Wiederholungen handhaben. Der Handler erhält:Verwenden Sie von dort
team_id des Workspaces angibt, anhand derer eingehende Ereignisse zugeordnet werden. Setze onConnectLogicFunction so, dass auf eine Logikfunktion in derselben App (über ihren universalIdentifier) verwiesen wird; sie wird direkt nach dem Erstellen des ConnectedAccount ausgeführt.src/connection-providers/slack-connection.ts
getConnection(connectedAccountId), um das aktuelle Zugriffstoken auszulesen und die API des Anbieters aufzurufen (z. B. Slack auth.test) oder eine Zuordnung im Key-Value Store zu persistieren.listConnections / getConnection
Verbindungen aus einer Logikfunktion verwenden
listConnections / getConnection
Verbindungen aus einer Logikfunktion verwenden
Innerhalb eines Logikfunktions-Handlers gibt Jede Verbindung hat:
listConnections({ providerName }) die ConnectedAccount-Zeilen dieser App für den angegebenen Anbieter zurück, mit aktualisierten Zugriffstoken.src/logic-functions/handlers/create-linear-issue-handler.ts
Hauptpunkte:
- Übergeben Sie
{ providerName }, um nach Anbieter zu filtern; lassen Sie es weg, um alle Verbindungen dieser App über alle Anbieter hinweg zu erhalten. - Der Server aktualisiert das Zugriffstoken vor der Rückgabe transparent. Ihr Handler sieht stets ein verwendbares Token (oder
authFailedAtist gesetzt). getConnection(id)ist das Pendant für eine einzelne Zeile.
Sichtbarkeit: pro Benutzer vs. im Arbeitsbereich geteilt
Wie Benutzer zwischen privaten und geteilten Anmeldedaten wählen
Sichtbarkeit: pro Benutzer vs. im Arbeitsbereich geteilt
Wie Benutzer zwischen privaten und geteilten Anmeldedaten wählen
Wenn ein Benutzer auf “Verbindung hinzufügen” klickt, wird er aufgefordert, eine Sichtbarkeit auszuwählen:Mehrere Verbindungen pro (Benutzer, Anbieter) sind erlaubt, sodass derselbe Benutzer “Persönliches Linear” und “Arbeits-Linear” nebeneinander haben kann.
- Nur für mich — die Anmeldedaten sind für den sich verbindenden Benutzer privat. Jede Logikfunktion, die in seinem/ihrem Auftrag aufgerufen wird (HTTP-Routen-Trigger mit
isAuthRequired: true), sieht sie; Cron-Trigger und Datenbankereignisse nicht. - Im Arbeitsbereich geteilt — jedes Arbeitsbereichsmitglied kann die Anmeldedaten verwenden. Cron-/Datenbank-Trigger sehen sie ebenfalls, da sie keinen anfragenden Benutzer haben.
Einmalige Anbietereinrichtung
Registrieren Sie Ihre OAuth-App beim Drittanbieterdienst
Einmalige Anbietereinrichtung
Registrieren Sie Ihre OAuth-App beim Drittanbieterdienst
Für jeden Verbindungsanbieter muss der Serveradministrator zunächst eine OAuth-App beim Drittanbieter registrieren.
- Gehen Sie zu den Entwickler-Einstellungen des Anbieters (z. B. https://linear.app/settings/api/applications/new).
- Setzen Sie die Redirect-URI auf
\<SERVER_URL>/auth/apps/callback. - Kopieren Sie die generierte Client ID und das Client Secret.
- Öffnen Sie die installierte App in Twenty als Serveradministrator → setzen Sie die Werte in den entsprechenden
serverVariables. - Mitglieder des Arbeitsbereichs können dann Verbindungen im Verbindungen-Abschnitt der jeweiligen App hinzufügen.