Com o De/Para gravado, o seu sistema troca o identificador do usuário por uma chave de entrada (key). É essa chave que leva o usuário para dentro do portal já autenticado, no Passo 3.
Neste artigo
- Antes de começar
- Obter a chave
- Cuidados
- Problemas comuns
Antes de começar
- As credenciais da sua instância, reunidas em Comece por aqui: credenciais para integrar com a API da Engage.
- O De/Para do usuário gravado — veja SSO — Passo 1: ligar o usuário do seu sistema ao usuário da Engage.
- A aplicação (
client_id) cadastrada como confidencial. Aplicações registradas pela área administrativa ou pela API já nascem assim — veja Registrar a aplicação de integração pela API. Se a sua aplicação é antiga, confirme com o Suporte antes de ir para produção. - Teste em homologação:
https://sandbox.engage.bz/api/v1.
Obter a chave
1Chame o POST /auth com custom_sso
POST https://sandbox.engage.bz/api/v1/auth
Content-Type: application/x-www-form-urlencoded
grant_type=custom_sso
&customer_id={customer_id}
&customer_token={customer_token}
&client_id={client_id}
&client_secret={client_secret}
&user_identifier={identificador_do_usuario}Esta chamada não leva Authorization: a autenticação acontece nela. No Postman: pasta 04 - SSO e identificadores, request SSO — obter a key (custom_sso). O script do request guarda a chave na variável ssoKey e não a imprime no console, de propósito.

Corpo do request SSO — obter a key (custom_sso) no Postman, com os campos preenchidos por variáveis e um identificador fictício
| Campo | Obrigatório | Exemplo | Observação |
|---|---|---|---|
grant_type | Sim | custom_sso | Valor fixo |
customer_id | Sim | minhaempresa | A sua instância |
customer_token | Sim | {customer_token} | Precisa ser da mesma instância |
client_id | Sim | {client_id} | O mesmo usado no De/Para do Passo 1 |
client_secret | Sim | {client_secret} | É o segredo que protege este fluxo. Nunca coloque em código que roda no navegador |
user_identifier | Sim | a3f1c2d4-55aa-4b7c-9e11-0d2b3c4d5e6f | O identificador gravado no Passo 1 |
device | Não | computer | computer (padrão), mobile ou app. Define o tempo de sessão aplicado |
language_id | Não | pt-BR | pt-BR, en-US, es-ES ou fr-FR |
login_origin | Não | sso | sso, administrator, game ou saml. Vai para o registro de acesso |
ip_login | Não* | 200.150.10.5 | IP real do usuário. *Obrigatório se a instância tiver lista de IPs permitidos |
privacy_policy_id | Não | 12 | Só se a instância tiver política de privacidade cadastrada |
app_version | Não | 3.14.0 | Versão do aplicativo, quando a chamada parte dele |
2Pegue a key da resposta
A resposta é a mesma de um login comum, com um campo a mais: a key. Valores fictícios:
{
"access_token": "eyJhbGciOi...",
"token_type": "bearer",
"expires_in": 86400,
"refresh_token": "0f3c9d1a...",
"user_id": "1234",
"key": "00000000-0000-4000-8000-000000000000",
"is_blocked": false,
"is_admin": false
}A key é usada no Passo 3. O tempo de vida da sessão vem em expires_in, em segundos: ele é definido no cadastro da aplicação e não é fixo.
Cuidado
Trate a key como uma senha. Ela dá acesso à conta do usuário. Não grave em log, não mostre em console e não envie por e-mail: gere, use e descarte.
Cuidados
- O usuário final não precisa ser administrador nem ter senha na Engage. Quem autentica é o seu sistema. Quem precisa de permissão é o usuário de serviço do Passo 1.
- O que continua sendo validado: usuário ativo e não bloqueado, licença da instância, janela de horário de acesso e lista de IPs permitidos.
- Este fluxo não passa pelo segundo fator (2FA) da instância. Se a sua política exige MFA, aplique no seu sistema antes de chamar o
custom_sso. - Não repita a chamada "por garantia". Cada chamada bem-sucedida abre uma sessão nova e derruba a anterior do mesmo usuário, na mesma aplicação e no mesmo
device. - O
customer_tokennão é segredo. Ele identifica a instância e pode ser obtido sem autenticação. O que protege o fluxo é oclient_secretjunto com um identificador não adivinhável. - Não faça SSO com o usuário de serviço. Para logins internos, a resposta vem sem a
key.
Problemas comuns
| O que aparece | Causa provável | O que fazer |
|---|---|---|
invalid_customer_id | customer_id errado ou instância inativa | Confira o valor |
invalid_parameters | Parâmetro faltando ou inválido: customer_token de outra instância, user_identifier vazio ou language_id fora da lista | Revise os campos obrigatórios |
invalid_credentials | O identificador não está no De/Para deste client_id, ou o usuário está inativo | Refaça o Passo 1 com o mesmo client_id e confira se o usuário está ativo |
invalid_grant | grant_type diferente de custom_sso | Corrija o grant_type |
user_is_blocked | Usuário bloqueado na Engage | Desbloqueie pela área administrativa |
license_expired | Licença da instância vencida | Fale com o seu contato comercial |
schedule_lock | Acesso fora da janela de horário da instância | Tente dentro do horário permitido |
your_ip_is_not_allowed | IP ausente ou fora da lista de IPs permitidos | Envie ip_login com o IP real e cadastre-o na lista |
HTTP 200 sem o campo key | O identificador aponta para um usuário interno | Faça o De/Para só de usuários finais |
Próximo passo
Leve o usuário ao portal com a key — veja SSO — Passo 3: levar o usuário ao portal.
Precisa de ajuda?
Escreva para meajuda@engage.bz informando o customer_id, o ambiente, o client_id e o código de erro. Nunca envie senhas, tokens, a key 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
Feedback enviado
Agradecemos seu esforço e tentaremos corrigir o artigo