Подходящие сценарии: вы разрабатываете стороннее приложение / 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 → «Создать приложение» и заполните:- Название / описание / Logo приложения: будут отображаться на странице согласия пользователя.
- Тип клиента (Client Type):
- Конфиденциальный (confidential) — у вас есть бэкенд и вы можете безопасно хранить
client_secret(Web-сервис, бэкенд-сервис). - Публичный (public) — чистый фронтенд / десктоп / CLI / мобильное приложение, не может хранить секрет, обязательно используйте PKCE.
- Конфиденциальный (confidential) — у вас есть бэкенд и вы можете безопасно хранить
- Адреса обратного вызова (Redirect URIs): адрес, на который пользователь перенаправляется после завершения авторизации; должен полностью совпадать с
redirect_uri, переданным при запуске авторизации; можно указать несколько. - Области разрешений (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):
refresh_token появляется только при запросе offline_access):
access_token — это JWT, содержащий заявление scope; срок действия 15 дней (число секунд expires_in). Срок действия Refresh Token — 30 дней.
Шаг 4: Вызовите API с помощью Access Token
Просто поместите токен в заголовокAuthorization: Bearer.
Получение информации о пользователе (UserInfo, поля фильтруются согласно авторизованному scope):
platform.acedata.cloud, авторизация по scope). Например, уже получен credentials:read:
scope в JWT — токен может получать доступ только к ресурсам, авторизованным пользователем. При доступе к неавторизованному ресурсу будет возвращён 403.
Обновление токена
После истечения Access Token используйте Refresh Token, чтобы получить пару новых токенов (требуется, чтобы изначально был запрошенoffline_access):
Отзыв токена
Реальный пример: именно так подключены наши собственные 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": "<читаемое человеком описание>" }:
Краткая сводка ограничений
Встраивание стороннего OAuth-приложения на главную страницу Studio
В Studio можно включить OAuth через «Настройки → Главная страница → Компоненты сайта», настроивclient_id стороннего приложения и зарегистрированный адрес обратного вызова.
Сайт и обратный вызов должны использовать HTTPS, иметь один и тот же origin (протокол, домен и порт) и иметь origin, отличный от Studio.
В конфигурации нельзя указывать client_secret; ключ приложения может храниться только на стороннем бэкенде.
Компонент запрашивает разрешения profile:read credentials:read. Каждый посетитель должен дать согласие отдельно; настройка компонента владельцем сайта не означает авторизацию посетителя.
Сторонняя страница генерирует случайные state и PKCE verifier, отправляя S256 challenge в Studio. Studio размещает официальную страницу авторизации в области компонента,
после согласия пользователя сторонняя сторона получает одноразовый код авторизации, вызывает token endpoint для обмена на OAuth access token, а затем получает доступ к
GET https://platform.acedata.cloud/api/v1/credentials/?user_id=<用户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.
