Перейти к основному содержанию
Twenty реализует OAuth 2.0 с потоком авторизационного кода + PKCE для пользовательских приложений и с учётными данными клиента для доступа между серверами. Клиенты регистрируются динамически по RFC 7591 — никакой ручной настройки в панели управления.

Когда использовать OAuth

СценарийМетод аутентификации
Внутренние скрипты, автоматизацияКлюч API
Внешнее приложение, действующее от имени пользователяOAuth — авторизационный код
Между серверами, без контекста пользователяOAuth — клиентские учётные данные
Приложение Twenty с расширениями пользовательского интерфейса (UI)Приложения (OAuth обрабатывается автоматически)

Зарегистрировать клиента

Twenty поддерживает динамическую регистрацию клиентов по RFC 7591. Ручная настройка не требуется — регистрируйте программно:
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"
}
Ответ:
{
  "client_id": "abc123",
  "client_secret": "secret456",
  "client_name": "My Integration",
  "redirect_uris": ["https://myapp.com/callback"]
}
Храните client_secret в надёжном месте — позже его нельзя будет получить.

Области действия

Область действияДоступ
apiПолный доступ на чтение/запись к Core и Metadata API
profileЧтение информации профиля аутентифицированного пользователя
Запрашивайте области действия как строку, разделённую пробелами: scope=api profile

Поток авторизационного кода

Используйте этот поток, когда ваше приложение действует от имени пользователя Twenty.

1. Перенаправьте пользователя для авторизации

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
ПараметрОбязательноОписание
client_idДаИдентификатор вашего зарегистрированного клиента
response_typeДаДолжно быть code
redirect_uriДаДолжен совпадать с зарегистрированным redirect URI
scopeНетОбласти действия, разделённые пробелами (по умолчанию api)
stateРекомендуетсяСлучайная строка для предотвращения CSRF-атак
code_challengeРекомендуетсяВызов PKCE (хэш SHA-256 от верификатора, в кодировке base64url)
code_challenge_methodРекомендуетсяДолжно быть S256 при использовании PKCE
Пользователь видит экран согласия и подтверждает или отклоняет доступ.

2. Обработайте обратный вызов

После авторизации Twenty перенаправляет обратно на ваш redirect_uri:
https://myapp.com/callback?code=AUTH_CODE&state=random_state_value
Проверьте, что state совпадает с отправленным значением.

3. Обменяйте код на токены

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
Ответ:
{
  "access_token": "eyJhbG...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "dGhpcyBpcyBh..."
}

4. Используйте токен доступа

GET /rest/companies
Authorization: Bearer ACCESS_TOKEN

5. Обновляйте при истечении срока действия

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

Поток клиентских учётных данных

Для интеграций между серверами без участия пользователя:
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
Возвращаемый токен имеет доступ на уровне рабочей области и не привязан к конкретному пользователю.

Обнаружение сервера

Twenty публикует свою конфигурацию OAuth на стандартной конечной точке обнаружения:
GET /.well-known/oauth-authorization-server
Это возвращает все конечные точки, поддерживаемые типы грантов, области действия и возможности — полезно для создания универсальных OAuth-клиентов.

Сводка конечных точек API

Конечная точкаНазначение
/.well-known/oauth-authorization-serverОбнаружение метаданных сервера
/oauth/registerДинамическая регистрация клиентов
/oauth/authorizeАвторизация пользователя
/oauth/tokenОбмен и обновление токена
СредаБазовый URL
Облакоhttps://api.twenty.com
Самостоятельный хостингhttps://{your-domain}

OAuth против ключей API

API ключиOAuth
НастройкаСоздаются в разделе «Настройки»Зарегистрировать клиента, реализовать поток
Контекст пользователяОтсутствует (уровень рабочей области)Права конкретного пользователя
Лучше всего подходит дляСкрипты, внутренние инструментыВнешние приложения, мультипользовательские интеграции
Ротация токеновВручнуюАвтоматическая с помощью refresh-токенов
Доступ по областям действияПолный доступ к APIДетализированный через области действия