defineConnectionProvider({ type: 'oauth', ... }) nu vor trebui să migreze.
defineConnectionProvider
Declară cum sunt obținute conexiunile aplicației tale
defineConnectionProvider
Declară cum sunt obținute conexiunile aplicației tale
ConnectedAccount în spațiul său de lucru.O configurație funcțională are nevoie de două fișiere — furnizorul de conexiune și o declarație serverVariables corespunzătoare în defineApplication care conține acreditările clientului OAuth.nameeste șirul identificator unic folosit înlistConnections({ providerName })(kebab-case, trebuie să corespundă^[a-z][a-z0-9-]*$).displayNameapare în fila de setări a aplicației și în lista de instrumente AI.clientIdVariable/clientSecretVariablesunt nume, nu valori — trebuie să se potrivească cheilor declarate îndefineApplication.serverVariables. Valorile realeclient_idșiclient_secretsunt introduse de administratorul serverului prin interfața de înregistrare a aplicației și nu sunt niciodată comise în repo-ul tău.- Folosește
serverVariables(nuapplicationVariables) — acreditările OAuth sunt la nivel de server și există o singură aplicație OAuth pentru fiecare server Twenty. - Până când ambele
serverVariablessunt completate, fila de setări a aplicației afișează un indiciu “necesită administrator de server” și butonul “Adaugă conexiune” este dezactivat. type: 'oauth'este singura valoare acceptată în prezent. Discriminatorul este compatibil cu versiuni viitoare: tipurile viitoare ('pat','api-key', …) vor adăuga blocuri noi de sub-configurație alături deoauth.
Rulează o funcție logică la conectare
Reacționează în momentul în care o conexiune este stabilită
Rulează o funcție logică la conectare
Reacționează în momentul în care o conexiune este stabilită
team_id al spațiului de lucru după care vor fi indexate evenimentele primite. Setează onConnectLogicFunction pentru a face referire la o funcție logică din aceeași aplicație (prin universalIdentifier), iar aceasta rulează imediat după ce ConnectedAccount este creat.getConnection(connectedAccountId) pentru a citi tokenul de acces proaspăt și a apela API-ul furnizorului (de ex. Slack auth.test) sau pentru a stoca o mapare în magazinul cheie–valoare.Rulează o funcție logică la deconectare
Curăță resursele atunci când o conexiune este eliminată
Rulează o funcție logică la deconectare
Curăță resursele atunci când o conexiune este eliminată
team_id la conectare, de exemplu, trebuie să elibereze acea revendicare astfel încât un alt spațiu de lucru să poată conecta aceeași echipă Slack. Setează onDisconnectLogicFunction pentru a face referire la o funcție logică din aceeași aplicație, iar aceasta rulează imediat după ce ConnectedAccount este șters.ConnectedAccount nu mai există atunci când rulează hook-ul, astfel încât getConnection(connectedAccountId) nu se mai rezolvă. Tot ceea ce îi este necesar procesului de curățare (un team_id, un ID extern de abonament) trebuie să fi fost scris în key-value store la momentul conectării, indexat după connectedAccountId.Hook-ul este declanșat atunci când o conexiune este eliminată în mod direct. Dezinstalarea aplicației elimină conexiunile acesteia printr-un mecanism în cascadă în baza de date, astfel încât hook-ul nu rulează în acest caz. Declară un uninstallLogicFunction pe defineApplication pentru acel flux: acesta rulează înainte ca metadatele aplicației să fie șterse, astfel încât poate apela în continuare listConnections și poate curăța tot ce a mai rămas.listConnections / getConnection
Folosește conexiunile dintr-o funcție logică
listConnections / getConnection
Folosește conexiunile dintr-o funcție logică
listConnections({ providerName }) returnează înregistrările ConnectedAccount ale acestei aplicații pentru furnizorul dat, cu tokenuri de acces reîmprospătate.- Pasează
{ providerName }pentru a filtra după furnizor; omite-l pentru a obține toate conexiunile pe care această aplicație le deține la toți furnizorii. - Serverul reîmprospătează transparent tokenul de acces înainte de a returna. Handlerul tău vede întotdeauna un token utilizabil (sau
authFailedAtsetat). getConnection(id)este echivalentul pentru o singură înregistrare.
Vizibilitate per utilizator vs partajată la nivel de spațiu de lucru
Cum aleg utilizatorii între acreditări private și partajate
Vizibilitate per utilizator vs partajată la nivel de spațiu de lucru
Cum aleg utilizatorii între acreditări private și partajate
- Doar pentru mine — acreditarea este privată pentru utilizatorul care se conectează. Orice funcție logică apelată în numele lor (declanșator de rută HTTP cu
isAuthRequired: true) o vede; declanșatoarele cron și evenimentele din bază de date nu. - Partajată la nivel de spațiu de lucru — orice membru al spațiului de lucru poate folosi acreditarea. Declanșatoarele cron / din bază de date o văd, de asemenea, deoarece nu au un utilizator al cererii.
Configurare unică a furnizorului
Înregistrează-ți aplicația OAuth la serviciul terț
Configurare unică a furnizorului
Înregistrează-ți aplicația OAuth la serviciul terț
- Mergi la setările pentru dezvoltatori ale furnizorului (de ex. https://linear.app/settings/api/applications/new).
- Setează Redirect URI la
\<SERVER_URL>/auth/apps/callback. - Copiază Client ID și Client Secret generate.
- Deschide aplicația instalată în Twenty ca administrator de server → setează valorile pe
serverVariablescorespunzătoare. - Membrii spațiului de lucru pot apoi să adauge conexiuni din secțiunea Conexiuni a fiecărei aplicații.