defineConnectionProvider({ type: 'oauth', ... }) non dovranno migrare.
defineConnectionProvider
Dichiara come vengono ottenute le connessioni della tua app
defineConnectionProvider
Dichiara come vengono ottenute le connessioni della tua app
ConnectedAccount nel suo spazio di lavoro.Una configurazione funzionante richiede due file — il provider di connessione e una dichiarazione serverVariables corrispondente su defineApplication che contiene le credenziali client OAuth.nameè la stringa identificativa univoca usata inlistConnections({ providerName })(kebab-case, deve corrispondere a^[a-z][a-z0-9-]*$).displayNameviene mostrato nella scheda delle impostazioni per app e nell’elenco degli strumenti AI.clientIdVariable/clientSecretVariablesono nomi, non valori — devono corrispondere alle chiavi dichiarate indefineApplication.serverVariables. Iclient_ideclient_secreteffettivi vengono inseriti dall’amministratore del server tramite l’interfaccia di registrazione dell’app e non vengono mai aggiunti al tuo repository.- Usa
serverVariables(nonapplicationVariables) — le credenziali OAuth sono a livello di server e c’è una sola app OAuth per ogni server Twenty. - Finché entrambe le
serverVariablesnon sono compilate, la scheda delle impostazioni per app mostra un suggerimento “richiede l’amministratore del server” e il pulsante “Aggiungi connessione” è disattivato. type: 'oauth'è l’unico valore supportato oggi. Il discriminatore è compatibile con versioni future: tipi futuri ('pat','api-key', …) aggiungeranno nuovi blocchi di sotto-configurazione accanto aoauth.
Esegui una funzione logica al momento della connessione
Reagisci non appena viene stabilita una connessione
Esegui una funzione logica al momento della connessione
Reagisci non appena viene stabilita una connessione
team_id dell’area di lavoro che fungerà da chiave per gli eventi in ingresso. Imposta onConnectLogicFunction per fare riferimento a una funzione logica nella stessa app (tramite il suo universalIdentifier), e questa verrà eseguita subito dopo la creazione di ConnectedAccount.getConnection(connectedAccountId) per leggere il token di accesso aggiornato e chiamare l’API del provider (ad es. Slack auth.test) o salvare una mappatura con il key-value store.Esegui una funzione logica alla disconnessione
Effettua la pulizia quando una connessione viene rimossa
Esegui una funzione logica alla disconnessione
Effettua la pulizia quando una connessione viene rimossa
team_id al momento della connessione deve rilasciare tale rivendicazione, in modo che un’altra area di lavoro possa connettere lo stesso team Slack. Imposta onDisconnectLogicFunction per fare riferimento a una funzione logica nella stessa app, e questa verrà eseguita subito dopo l’eliminazione di ConnectedAccount.ConnectedAccount è già stato rimosso quando l’hook viene eseguito, quindi getConnection(connectedAccountId) non restituisce più alcun risultato. Tutto ciò di cui la procedura di cleanup ha bisogno (un team_id, un id di sottoscrizione esterna) deve essere stato scritto nello store chiave-valore al momento della connessione, con chiave connectedAccountId.L’hook viene attivato quando una connessione viene rimossa autonomamente. La disinstallazione dell’app elimina le sue connessioni tramite una cascata del database, quindi in questo caso l’hook non viene eseguito. Dichiara una uninstallLogicFunction su defineApplication per quel percorso: viene eseguita prima che i metadati dell’app vengano eliminati, così può ancora chiamare listConnections ed eseguire il cleanup di ciò che resta.listConnections / getConnection
Usa le connessioni da una funzione di logica
listConnections / getConnection
Usa le connessioni da una funzione di logica
listConnections({ providerName }) restituisce le righe ConnectedAccount di questa app per il provider indicato, con token di accesso aggiornati.- Passa
{ providerName }per filtrare per provider; omettilo per ottenere tutte le connessioni possedute da questa app su tutti i provider. - Il server rinnova in modo trasparente il token di accesso prima di restituire la risposta. Il tuo handler vede sempre un token utilizzabile (oppure
authFailedAtimpostato). getConnection(id)è l’equivalente a singola riga.
Visibilità per utente vs condivisa nello spazio di lavoro
Come gli utenti scelgono tra credenziali private e condivise
Visibilità per utente vs condivisa nello spazio di lavoro
Come gli utenti scelgono tra credenziali private e condivise
- Solo per me — la credenziale è privata per l’utente che effettua la connessione. Qualsiasi funzione di logica chiamata per loro conto (trigger di route HTTP con
isAuthRequired: true) la vede; i trigger cron e gli eventi del database no. - Condivisa nello spazio di lavoro — qualsiasi membro dello spazio di lavoro può usare la credenziale. Anche i trigger cron/database la vedono, poiché non hanno un utente della richiesta.
Configurazione una tantum del provider
Registra la tua app OAuth presso il servizio di terze parti
Configurazione una tantum del provider
Registra la tua app OAuth presso il servizio di terze parti
- Vai alle impostazioni sviluppatore del provider (ad es. https://linear.app/settings/api/applications/new).
- Imposta la Redirect URI su
\<SERVER_URL>/auth/apps/callback. - Copia il Client ID e il Client Secret generati.
- Apri l’app installata in Twenty come amministratore del server → imposta i valori nelle corrispondenti
serverVariables. - I membri dello spazio di lavoro possono quindi aggiungere connessioni dalla sezione Connessioni dell’app.