Skip to main content
Faça com que seu próprio produto suporte “Entrar com Ace Data Cloud” e, após a autorização do usuário, em nome do usuário leia e escreva seus recursos do Ace Data Cloud (perfil, API Token, assinatura, uso, pedidos etc.). A base é o padrão modo de código de autorização OAuth 2.0 (Authorization Code) + PKCE, exatamente igual à integração de login com GitHub / Google — qualquer biblioteca cliente OAuth que você já tenha pode ser usada diretamente.
Cenários adequados: você está criando um aplicativo de terceiros / Agent / cliente MCP / fluxo de trabalho automatizado e deseja permitir que os usuários façam login com um clique usando uma conta Ace Data Cloud e acessem seus recursos na plataforma conforme necessário, sem precisar que copiem e colem manualmente uma API Key.

Referência rápida de termos & endpoints

Todos os endpoints estão em https://auth.acedata.cloud, e os endereços mais recentes podem ser obtidos a qualquer momento pelo endpoint de descoberta (Discovery):
Recursos compatíveis: response_type=code, grant_types=authorization_code, refresh_token, code_challenge_methods=S256, plain, métodos de autenticação de cliente client_secret_post (cliente confidencial) / none (cliente público PKCE).

Escopos de permissão (Scope)

Solicite conforme o “princípio do menor privilégio”; o usuário verá cada permissão solicitada na página de autorização. Identidade (compatível com OIDC) Recursos da plataforma Agregados (expansão automática) Especiais
Combinações típicas: “login com um clique” de terceiros = openid profile; clientes MCP / IDE que precisam configurar Key automaticamente = openid profile credentials:read credentials:write; console de gerenciamento completo = openid profile email platform offline_access.

Passo 1: registrar um aplicativo OAuth

Abra auth.acedata.cloud/user/oauth-apps → “Criar aplicativo”, preencha:
  1. Nome / descrição / logo do aplicativo: serão exibidos na página de consentimento de autorização do usuário.
  2. Tipo de cliente (Client Type):
    • Confidencial (confidential) — você possui um backend e pode armazenar com segurança o client_secret (serviço Web, serviço backend).
    • Público (public) — frontend puro / desktop / CLI / mobile, não é possível armazenar uma chave, sendo obrigatório usar PKCE.
  3. URIs de redirecionamento (Redirect URIs): endereços para os quais o usuário será redirecionado após a autorização ser concluída, devem ser exatamente iguais ao redirect_uri enviado quando você iniciar a autorização, podendo haver vários.
  4. Escopos de permissão (Scopes): marque os scopes de que você precisa na seção anterior.
Após salvar, você receberá o client_id; clientes confidenciais também exibirão uma única vez o client_secret — salve-o imediatamente, pois não será possível visualizá-lo novamente após fechar (é possível gerar outro em “Rotacionar chave / Rotate Secret” na página de detalhes, e a chave antiga será invalidada imediatamente).
Cada conta pode criar no máximo 20 aplicativos OAuth.

Passo 2: redirecionar o usuário para a página de autorização

No seu aplicativo, redirecione o navegador do usuário para a página de autorização, incluindo parâmetros de consulta:
  • state: gere você mesmo uma string aleatória; ela será retornada inalterada no callback e serve para prevenir CSRF; certifique-se de validá-la.
  • PKCE (obrigatório para clientes públicos, também recomendado para clientes confidenciais): primeiro gere um code_verifier aleatório e depois calcule code_challenge = BASE64URL( SHA256( code_verifier ) ); coloque o code_challenge na URL de autorização, e guarde o code_verifier para uso no passo 4.
Após o usuário fazer login e clicar em “Concordar”, o navegador será redirecionado de volta para:
Se o usuário recusar: <redirect_uri>?error=access_denied&error_description=...&state=....
O código de autorização é válido por 10 minutos e só pode ser usado uma vez.

Passo 3: trocar o código de autorização por tokens

No seu backend (cliente confidencial) ou cliente (cliente público PKCE), use code para chamar o endpoint de token. Cliente confidencial (com client_secret):
Cliente público (PKCE, sem client_secret):
Retorno em caso de sucesso (o refresh_token aparece somente quando offline_access foi solicitado):
O access_token é um JWT, contendo a declaração scope; o período de validade é de 15 dias (segundos em expires_in). O Refresh Token é válido por 30 dias.

Etapa 4: usar o Access Token para chamar a interface

Basta colocar o token no cabeçalho Authorization: Bearer. Ler informações do usuário (UserInfo, campos filtrados de acordo com o scope autorizado):
Chamar a interface de recursos da plataforma (platform.acedata.cloud, autenticada por scope). Por exemplo, se credentials:read foi concedido:
O backend da plataforma verificará a declaração scope no JWT — o token só pode acessar os recursos autorizados pelo usuário. Se recursos não autorizados forem acessados, retornará 403.

Atualizar token

Após o Access Token expirar, use o Refresh Token para trocar por um novo par de tokens (é necessário ter solicitado offline_access originalmente):
A estrutura de retorno é a mesma da etapa 3; o scope será mantido inalterado a partir da autorização original. Após a atualização, o antigo Refresh Token se torna inválido (rotação); salve o novo.

Revogar token

Caso real: é assim que nossos próprios servidores MCP se conectam

Os mais de 15 servidores MCP da Ace Data Cloud (NanoBanana, Midjourney, Suno, Seedance, Kling…) usam este fluxo para a conexão “Sign in with Ace Data Cloud” exibida no Claude Desktop / Cursor: todos são registrados como aplicações OAuth do tipo público (PKCE), solicitam scopes relacionados a credentials e, após a autorização do usuário, os servidores MCP podem chamar api.acedata.cloud em nome do usuário — sem que o usuário precise colar manualmente uma API Key. Sua integração é exatamente igual à deles.

Erros comuns

A resposta de erro é uniformemente { "error": "<code>", "error_description": "<explicação legível por humanos>" }:

Referência rápida de limites

Incorporar aplicações OAuth de terceiros na página inicial do Studio

Em “Configurações → Página inicial → Componentes do site” do Studio, é possível ativar OAuth e configurar o client_id e o endereço de retorno registrado da aplicação de terceiros. O site e o retorno devem usar HTTPS, ter a mesma origem (protocolo, domínio e porta) e usar uma origem diferente da do Studio. O client_secret não deve ser preenchido na configuração; a chave da aplicação só pode ser armazenada no backend de terceiros. As permissões solicitadas pelo componente são profile:read credentials:read. Cada visitante precisa consentir separadamente; a configuração do componente pelo proprietário do site não representa a autorização dos visitantes. A página de terceiros gera um state aleatório e um verifier PKCE, e envia um challenge S256 ao Studio. O Studio hospeda a página oficial de autorização na área do componente, e, após o consentimento do usuário, terceiros recebem um código de autorização de uso único, chamam o endpoint de token para trocá-lo por um OAuth access token e, em seguida, acessam GET https://platform.acedata.cloud/api/v1/credentials/?user_id=&lt;用户ID> para ler a API Key existente. O ID do usuário vem do id retornado pela etapa anterior GET https://auth.acedata.cloud/api/v1/users/me; a interface de lista de credenciais não aceita user_id=me. O Studio não transmite seu próprio token de login a terceiros, nem lê e injeta diretamente a Key do usuário. Clientes públicos devem usar S256 PKCE. Ao trocar o token, é obrigatório enviar o redirect_uri exatamente igual ao da solicitação de autorização. O código de autorização só pode ser trocado uma vez. Antes da autorização, será verificado se o endereço de retorno foi registrado. A página de terceiros precisa implementar o protocolo de mensagens; qualquer página web existente não pode ser integrada automaticamente apenas preenchendo uma URL. Veja o exemplo completo em Guia de integração do componente OAuth do Studio. Autorizar a leitura da API Key equivale a permitir que terceiros salvem e usem essa Key. Cancelar a autorização OAuth não invalida a Key que terceiros já copiaram; o usuário precisa revogar ou rotacionar a Key separadamente.