API Passo 2 - Obtendo o Bearer Token

Modificado em Qui, 22 Out na (o) 5:12 PM

Com as credenciais em mãos, o próximo passo é trocá-las por um access_token — a chave que acompanha todas as chamadas da API. Este artigo mostra como gerar o token, como usá-lo e o que fazer quando ele expira.

Neste artigo

  1. Antes de começar
  2. Como funciona
  3. Gerar o token no Postman
  4. Gerar o token pelo seu sistema
  5. Quando o token expira
  6. Boas práticas
  7. Problemas comuns

Antes de começar

  • As seis credenciais da sua instância, reunidas em Comece por aqui: credenciais para integrar com a API da Engage.
  • Um usuário de serviço com perfil de administrador — o login dedicado à integração, normalmente no formato integracao + customer_id (exemplo: integracaomeucliente).
  • A coleção do Postman importada, se quiser testar sem escrever código. Ela está anexada ao artigo de credenciais.

Como funciona

A autenticação tem três etapas, sempre nesta ordem:

  1. Sua integração envia as credenciais para POST /auth.
  2. A API devolve um access_token e o tempo de validade dele, em segundos.
  3. Em todas as chamadas seguintes, o token vai no cabeçalho Authorization. Quando ele expira, a integração pede um novo.

Gerar o token no Postman

  1. Selecione o Environment Engage - APIs (preencher) e confira que customerId, clientId, clientSecret, adminUser e adminPass estão preenchidos.
  2. Confirme que baseUrl aponta para homologação.
  3. Abra a pasta 02 - Autenticação, request Obter access_token (grant_type=password), e clique em Send.

Request de autenticação no Postman: corpo no formato x-www-form-urlencoded, com os valores vindos das variáveis do Environment

Sucesso

A resposta traz o access_token, e o próprio request já o guarda na variável accessToken. Todas as outras pastas da coleção usam essa variável — você não copia token na mão.

Gerar o token pelo seu sistema

1Envie as credenciais

POST https://sandbox.engage.bz/api/v1/auth
Content-Type: application/x-www-form-urlencoded

grant_type=password&customer_id={customer_id}&client_id={client_id}&client_secret={client_secret}&username={username}&password={password}
CampoObrigatórioValorObservação
grant_typeSimpasswordSempre password para login com usuário e senha
customer_idSimo seu customer_idA instância precisa existir e estar ativa
client_idSimo seu client_idAplicação registrada na instância
client_secretSimo seu client_secretEnvie sempre, mesmo que a chamada funcione sem ele
usernameSimlogin do usuário de serviçoExemplo: integracaomeucliente
passwordSimsenha do usuário de serviço—
deviceNãocomputerAceita computer, app ou mobile. Padrão: computer
language_idNãopt-BRIdioma das mensagens de erro: pt-BR, en-US, es-ES ou fr-FR

Atenção

O corpo precisa ser application/x-www-form-urlencoded. Este endpoint não aceita JSON — se o corpo for enviado como JSON, os campos chegam vazios e o erro aparece como customer_id ou grant_type inválido.

2Guarde o token e a validade

Resposta de sucesso (valores ilustrativos):

{
  "access_token": "{access_token}",
  "token_type": "bearer",
  "expires_in": 86400,
  "refresh_token": "{refresh_token}",
  "client_id": "meusistema",
  "customer_id": "meucliente",
  "user_id": "12345",
  "device": "computer"
}

Sua integração precisa de dois campos: access_token, o token em si, e expires_in, por quantos segundos ele vale.

3Envie o token em todas as chamadas

Authorization: Bearer {access_token}

A palavra Bearer vem antes do token, separada por um espaço.

Quando o token expira

O access_token tem prazo de validade. Depois dele, qualquer endpoint passa a responder HTTP 401 — nenhum avisa antes.

  • Leia sempre o expires_in da resposta. O tempo de vida é definido no cadastro de cada aplicação e muda de uma instância para outra.
  • Renove com folga, antes do fim do prazo.
  • Trate o 401 como "renove e tente uma vez", não como erro definitivo. Se a nova tentativa também falhar, aí sim é um problema a investigar.

Cuidado

Não fixe o tempo de expiração no seu código. A documentação antiga afirmava 25 minutos como regra fixa — o número está errado e o valor varia por aplicação. O único valor confiável é o expires_in.

Dica

Gerar um token novo derruba o anterior, e o refresh_token nem sempre vem na resposta. Como lidar com renovação e sessão simultânea está em "Passo 2.1 — access_token, refresh_token e customer_token: qual é qual".

Boas práticas

  • Use um usuário de serviço, nunca o login de uma pessoa. Usuários comuns passam pelas políticas de troca de senha no primeiro acesso e de expiração de senha, que bloqueiam a autenticação sem aviso.
  • Envie sempre o client_secret. Em algumas instâncias a chamada funciona sem ele — a integração passa em homologação e falha em produção.
  • Só existem dois grant_type para integração: password, para gerar o token, e refresh_token, para renová-lo.
  • Credenciais nunca vão na URL nem em log. Elas viajam no corpo da requisição.
  • Evite repetição automática em loop. Muitas tentativas com senha errada travam o usuário por alguns minutos.

Problemas comuns

O que apareceCausa provávelO que fazer
invalid_grantgrant_type ausente ou escrito erradoEnvie grant_type=password
invalid_customer_idcustomer_id vazio, inexistente ou instância inativa — ou corpo enviado como JSONConfira o valor e envie o corpo como x-www-form-urlencoded
invalid_parametersValor inválido em device, language_id, client_id ou client_secretRevise os valores aceitos na tabela da Etapa 1
invalid_client_secretSegredo ausente ou incorretoUse o client_secret gerado no registro da aplicação
invalid_credentialsLogin inexistente, usuário inativo ou senha erradaConfira o login do usuário de serviço
user_is_blockedUsuário bloqueado na plataformaDesbloqueie em Usuários, na área administrativa
max_attempts_reachedExcesso de tentativas com senha erradaAguarde alguns minutos ou redefina a senha no Admin
change_password_on_first_access ou password_is_expiredUsuário comum, sujeito à política de senhaTroque para o usuário de serviço
schedule_lockA instância limita o acesso por horárioAjuste a configuração ou o horário da rotina
license_expiredLicença da instância vencidaFale com o time comercial ou com o Suporte
your_ip_is_not_allowedIP de origem fora da lista permitidaPeça a liberação do IP ao Suporte
HTTP 401 em outro endpointToken expirado, derrubado por um login mais recente, ou de outra instânciaGere um novo token e confira se a rota usa o mesmo customer_id
HTTP 403Token válido, mas o usuário não tem permissão para o recursoConfira o perfil de administrador do usuário de serviço

A pasta 98 - Erros comuns da coleção traz o catálogo completo de erros e uma chamada de diagnóstico que separa "o token expirou" de "falta permissão".

Próximo passo

Com o token gerado, você já pode    atualizar usuários — veja Integração de usuários.

Precisa de ajuda?

Escreva para meajuda@engage.bz informando o customer_id, o ambiente e a mensagem de erro completa. Nunca envie senhas ou o client_secret por e-mail.

Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos
A verificação do CAPTCHA é obrigatória.

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo