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
Un provider di connessione descrive l’handshake OAuth di cui la tua app ha bisogno. L’utente fa clic su “Aggiungi connessione” nelle impostazioni della tua app, completa la schermata di consenso del provider e viene creata una riga Punti chiave:
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.src/connection-providers/linear-connection.ts
src/application.config.ts
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.
listConnections / getConnection
Usa le connessioni da una funzione di logica
listConnections / getConnection
Usa le connessioni da una funzione di logica
All’interno di un gestore di funzione di logica, Ogni connessione ha:
Punti chiave:
listConnections({ providerName }) restituisce le righe ConnectedAccount di questa app per il provider indicato, con token di accesso aggiornati.src/logic-functions/handlers/create-linear-issue-handler.ts
| Campo | Descrizione |
|---|---|
id | ID di riga univoco; passalo a getConnection(id) per recuperarne una singola connessione |
visibility | 'user' (privata per un membro dello spazio di lavoro) oppure 'workspace' (condivisa con tutti i membri) |
scopes | Autorizzazioni OAuth concesse dal provider a monte (distinte da visibility — non sono correlate) |
userWorkspaceId | L’id userWorkspace del proprietario — utile per selezionare “la connessione dell’utente della richiesta” nei trigger di route HTTP |
accessToken | Token di accesso OAuth aggiornato (rinnovato automaticamente se scaduto) |
name / handle | Il nome visualizzato della connessione (derivato automaticamente al callback OAuth, rinominabile dall’utente) |
authFailedAt | Impostato quando l’aggiornamento più recente non è riuscito; l’utente deve riconnettersi |
- 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
Quando un utente fa clic su “Aggiungi connessione”, viene richiesto di scegliere una visibilità:Sono consentite più connessioni per (utente, provider), quindi lo stesso utente può avere affiancate “Linear personale” e “Linear di lavoro”.
- 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
Per ciascun provider di connessione, l’amministratore del server deve prima registrare un’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.