Skip to main content
Надайте власному продукту підтримку «Увійти за допомогою Ace Data Cloud» і після авторизації користувача від імені користувача читайте та записуйте його ресурси Ace Data Cloud (профіль, API Token, підписки, використання, замовлення тощо). В основі лежить стандартний режим коду авторизації OAuth 2.0 (Authorization Code) + PKCE, спосіб інтеграції повністю ідентичний входу через GitHub / Google — будь-яка ваша наявна бібліотека OAuth-клієнта може використовуватися безпосередньо.
Підходить для сценаріїв: ви створюєте сторонній застосунок / Agent / MCP-клієнт / автоматизований робочий процес, хочете, щоб користувачі входили одним кліком за допомогою облікового запису Ace Data Cloud і за потреби отримували доступ до своїх ресурсів на платформі, без необхідності вручну копіювати та вставляти API Key.

Швидка довідка термінів і кінцевих точок

Усі кінцеві точки розміщені на https://auth.acedata.cloud, актуальні адреси можна будь-коли отримати через кінцеву точку виявлення (Discovery):
Підтримувані можливості: response_type=code, grant_types=authorization_code, refresh_token, code_challenge_methods=S256, plain, способи автентифікації клієнта client_secret_post (конфіденційний клієнт) / none (публічний клієнт PKCE).

Області дозволів (Scope)

Запитуйте відповідно до принципу «мінімальних привілеїв», користувач побачить на сторінці авторизації кожен дозвіл, який ви запитуєте. Класи ідентифікації (сумісні з OIDC) Класи ресурсів платформи Агреговані класи (автоматичне розгортання) Спеціальні
Типові комбінації: сторонній «вхід одним кліком» = openid profile; MCP / IDE-клієнту потрібно автоматично налаштовувати Key = openid profile credentials:read credentials:write; повна панель керування = openid profile email platform offline_access.

Крок 1: зареєструйте OAuth-застосунок

Відкрийте auth.acedata.cloud/user/oauth-apps → «Створити застосунок», заповніть:
  1. Назва / опис / логотип застосунку: відображатимуться на сторінці згоди користувача на авторизацію.
  2. Тип клієнта (Client Type):
    • Конфіденційний (confidential) — у вас є бекенд, де можна безпечно зберігати client_secret (вебсервіс, бекенд-сервіс).
    • Публічний (public) — лише фронтенд / десктоп / CLI / мобільний застосунок, неможливо зберігати секрет, необхідно використовувати PKCE.
  3. Адреси зворотного виклику (Redirect URIs): адреса, на яку користувача буде перенаправлено після завершення авторизації, має повністю збігатися з redirect_uri, переданим вами під час ініціації авторизації, можна вказати декілька.
  4. Області дозволів (Scopes): позначте scope, які вам потрібні з попереднього розділу.
Після збереження ви отримаєте client_id; для конфіденційного клієнта також одноразово буде показано client_secret — збережіть його негайно, після закриття переглянути його знову буде неможливо (можна повторно згенерувати на сторінці деталей через «Rotate Secret / Ротація секрету», старий секрет негайно стане недійсним).
Кожен обліковий запис може створити щонайбільше 20 OAuth-застосунків.

Крок 2: перенаправте користувача на сторінку авторизації

У вашому застосунку перенаправте браузер користувача на сторінку авторизації, передавши параметри запиту:
  • state: самостійно згенеруйте випадковий рядок, він повертається без змін у зворотному виклику та використовується для захисту від CSRF, обов’язково перевіряйте його.
  • PKCE (обов’язково для публічних клієнтів, рекомендовано також для конфіденційних): спочатку згенеруйте випадковий code_verifier, потім обчисліть code_challenge = BASE64URL( SHA256( code_verifier ) ), помістіть code_challenge в URL авторизації, а code_verifier збережіть у себе для використання на кроці 4.
Після входу користувача та натискання «Погоджуюся» браузер буде перенаправлено назад:
Якщо користувач відмовиться: <redirect_uri>?error=access_denied&error_description=...&state=....
Термін дії коду авторизації становить 10 хвилин, і його можна використати лише один раз.

Крок 3: обміняйте код авторизації на токен

На вашому бекенді (конфіденційний клієнт) або клієнті (публічний клієнт PKCE) викличте кінцеву точку токенів за допомогою code. Конфіденційний клієнт (із client_secret):
Публічний клієнт (PKCE, без client_secret):
Успішна відповідь (refresh_token з’являється лише якщо запитано offline_access):
access_token — це JWT, що містить декларацію scope; строк дії 15 днів (кількість секунд у expires_in). Строк дії Refresh Token — 30 днів.

Крок 4: виклик інтерфейсів за допомогою Access Token

Достатньо помістити токен у заголовок Authorization: Bearer. Отримання інформації про користувача (UserInfo, поля фільтруються відповідно до авторизованого scope):
Виклик інтерфейсу ресурсів платформи (platform.acedata.cloud, авторизація за scope). Наприклад, якщо отримано credentials:read:
Бекенд платформи перевіряє декларацію scope у JWT — токен може отримувати доступ лише до ресурсів, авторизованих користувачем. У разі доступу до неавторизованого ресурсу буде повернено 403.

Оновлення токена

Після закінчення строку дії Access Token використовуйте Refresh Token, щоб отримати нову пару токенів (потрібно було спочатку запитати offline_access):
Структура відповіді така сама, як у кроці 3; scope буде збережено без змін з початкової авторизації. Після оновлення старий Refresh Token стає недійсним (ротація), збережіть новий.

Відкликання токена

Реальний приклад: наші власні MCP-сервери підключені саме так

Підключення «Sign in with Ace Data Cloud», що з’являється в Claude Desktop / Cursor для 15+ MCP-серверів Ace Data Cloud (NanoBanana, Midjourney, Suno, Seedance, Kling…), використовує саме цей процес: усі вони зареєстровані як OAuth-застосунки типу публічний (PKCE), запитують scope, пов’язані з credentials, і після авторизації користувача MCP-сервери можуть викликати api.acedata.cloud від імені користувача — без необхідності для користувача вручну вставляти API Key. Ваш спосіб підключення повністю такий самий, як у них.

Поширені помилки

Відповіді з помилками уніфіковані як { "error": "<code>", "error_description": "&lt;зрозумілий людині опис>" }:

Швидкий довідник обмежень

Вбудовування стороннього OAuth-застосунку на головній сторінці Studio

У Studio в розділі «Налаштування → Головна сторінка → Компоненти сайту» можна увімкнути OAuth, налаштувати client_id стороннього застосунку та зареєстровану адресу зворотного виклику. Сайт і зворотний виклик мають використовувати HTTPS, мати однакове походження (протокол, домен і порт) та мати інше походження, ніж Studio. У конфігурації не можна вказувати client_secret; секрет застосунку може зберігатися лише на сторонньому бекенді. Компонент запитує дозволи profile:read credentials:read. Кожен відвідувач повинен надати згоду окремо; налаштування компонента власником сайту не означає авторизацію відвідувача. Стороння сторінка генерує випадкові state і PKCE verifier, надсилаючи до Studio S256 challenge. Studio розміщує офіційну сторінку авторизації в області компонента, після згоди користувача стороння сторона отримує одноразовий код авторизації, викликає token endpoint для обміну на OAuth access token, а потім отримує доступ до GET https://platform.acedata.cloud/api/v1/credentials/?user_id=&lt;用户ID> для читання наявного API Key. ID користувача береться з id, поверненого на попередньому кроці через GET https://auth.acedata.cloud/api/v1/users/me; інтерфейс списку облікових даних не приймає user_id=me. Studio не передає сторонній стороні власний токен входу та не зчитує й не вставляє безпосередньо Key користувача. Публічні клієнти повинні використовувати S256 PKCE. Під час отримання token потрібно передавати redirect_uri, що повністю збігається з адресою в запиті авторизації. Код авторизації можна обміняти лише один раз. Перед авторизацією перевіряється, чи зареєстровано адресу зворотного виклику. Стороння сторінка повинна реалізувати протокол повідомлень; будь-яка готова вебсторінка не може бути автоматично підключена лише заповненням URL. Повний приклад див. у посібнику з інтеграції OAuth-компонента Studio. Авторизація на читання API Key означає дозвіл сторонній стороні зберігати й використовувати цей Key. Скасування OAuth-авторизації не зробить недійсним Key, вже скопійований сторонньою стороною; користувачеві потрібно окремо відкликати або ротувати Key.