Salt la conținutul principal
Twenty implementează OAuth 2.0 cu cod de autorizare + PKCE pentru aplicațiile orientate către utilizatori și acreditări de client pentru acces server-la-server. Clienții sunt înregistrați dinamic prin RFC 7591 — fără configurare manuală într-un panou de control.

Când să folosiți OAuth

ScenariuMetodă de autentificare
Scripturi interne, automatizareCheie API
Aplicație externă care acționează în numele unui utilizatorOAuth — Cod de autorizare
Server-la-server, fără context de utilizatorOAuth — Acreditări de client
Aplicație Twenty cu extensii UIAplicații (OAuth este gestionat automat)

Înregistrați un client

Twenty acceptă înregistrarea dinamică a clienților conform RFC 7591. Nu este necesară configurare manuală — înregistrați programatic:
POST /oauth/register
Content-Type: application/json

{
  "client_name": "My Integration",
  "redirect_uris": ["https://myapp.com/callback"],
  "grant_types": ["authorization_code"],
  "token_endpoint_auth_method": "client_secret_post"
}
Răspuns:
{
  "client_id": "abc123",
  "client_secret": "secret456",
  "client_name": "My Integration",
  "redirect_uris": ["https://myapp.com/callback"]
}
Stocați client_secret în siguranță — nu poate fi recuperat ulterior.

Domenii de aplicare

Domeniu de aplicareAcces
apiAcces complet de citire/scriere la API-urile Core și Metadata
profileCitește informațiile de profil ale utilizatorului autentificat
Solicitați domeniile de aplicare ca un șir separat prin spații: scope=api profile

Fluxul codului de autorizare

Folosiți acest flux când aplicația dvs. acționează în numele unui utilizator Twenty.

1. Redirecționați utilizatorul pentru autorizare

GET /oauth/authorize?
  client_id=YOUR_CLIENT_ID&
  response_type=code&
  redirect_uri=https://myapp.com/callback&
  scope=api&
  state=random_state_value&
  code_challenge=CHALLENGE&
  code_challenge_method=S256
ParametruObligatoriuDescriere
client_idDaID-ul clientului înregistrat
response_typeDaTrebuie să fie code
redirect_uriDaTrebuie să corespundă unei adrese URI de redirecționare înregistrate
scopeNuDomenii de aplicare separate prin spațiu (implicit api)
stateRecomandatȘir aleatoriu pentru a preveni atacurile CSRF
code_challengeRecomandatProvocare PKCE (hash SHA-256 al verificatorului, codificat base64url)
code_challenge_methodRecomandatTrebuie să fie S256 când se folosește PKCE
Utilizatorul vede un ecran de consimțământ și aprobă sau refuză accesul.

2. Gestionați callback-ul

După autorizare, Twenty redirecționează înapoi către redirect_uri-ul dvs.:
https://myapp.com/callback?code=AUTH_CODE&state=random_state_value
Verificați că state corespunde cu ceea ce ați trimis.

3. Schimbați codul pe tokenuri

POST /oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&
code=AUTH_CODE&
redirect_uri=https://myapp.com/callback&
client_id=YOUR_CLIENT_ID&
client_secret=YOUR_CLIENT_SECRET&
code_verifier=YOUR_PKCE_VERIFIER
Răspuns:
{
  "access_token": "eyJhbG...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "dGhpcyBpcyBh..."
}

4. Utilizați tokenul de acces

GET /rest/companies
Authorization: Bearer ACCESS_TOKEN

5. Reîmprospătați la expirare

POST /oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&
refresh_token=YOUR_REFRESH_TOKEN&
client_id=YOUR_CLIENT_ID&
client_secret=YOUR_CLIENT_SECRET

Fluxul cu acreditări de client

Pentru integrări server-la-server fără interacțiune cu utilizatorul:
POST /oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&
client_id=YOUR_CLIENT_ID&
client_secret=YOUR_CLIENT_SECRET&
scope=api
Tokenul returnat are acces la nivel de spațiu de lucru, neasociat unui utilizator specific.

Descoperirea serverului

Twenty publică configurația sa OAuth la un endpoint standard de descoperire:
GET /.well-known/oauth-authorization-server
Acesta returnează toate endpoint-urile, tipurile de grant acceptate, domeniile de aplicare și capabilitățile — util pentru construirea de clienți OAuth generici.

Rezumatul endpoint-urilor API

EndpointScop
/.well-known/oauth-authorization-serverDescoperirea metadatelor serverului
/oauth/registerÎnregistrare dinamică a clientului
/oauth/authorizeAutorizarea utilizatorului
/oauth/tokenSchimb și reîmprospătare a tokenurilor
MediuURL de bază
Cloudhttps://api.twenty.com
Găzduire propriehttps://{your-domain}

OAuth vs Chei API

Chei APIOAuth
ConfigurareGenerați în SetăriÎnregistrați un client, implementați fluxul
Contextul utilizatoruluiNiciunul (nivel de spațiu de lucru)Permisiunile utilizatorului specific
Cel mai potrivit pentruScripturi, instrumente interneAplicații externe, integrări multi-utilizator
Rotirea tokenurilorManualAutomată prin tokenuri de reîmprospătare
Acces pe domenii de aplicareAcces API completGranular, prin domenii de aplicare