Referência OAuth2
Endereços
| Uso |
URL |
| Início da autorização |
https://admin.gubee.com.br/#/oauth2/authorize |
| Emissão e renovação de token |
https://auth.gubee.com.br/realms/gubee/protocol/openid-connect/token |
| API de integração |
https://api.gubee.com.br/integration/* |
| Painel: criar e gerenciar apps |
Integrações → Meus apps |
| Painel: apps autorizados pelo seller |
Integrações → Apps conectados |
Parâmetros da URL de autorização
| Parâmetro |
Obrigatório |
Valores aceitos |
client_id |
Sim |
O client_id do app registrado |
redirect_uri |
Sim |
Uma das URIs cadastradas, em match exato e URL-encoded |
response_type |
Sim |
code |
code_challenge |
Sim |
Challenge derivado do code_verifier |
code_challenge_method |
Sim |
S256 |
state |
Não (recomendado) |
Valor aleatório do parceiro, devolvido sem alteração |
nonce |
Não |
Repassado sem alteração |
Parâmetros da troca de token
Authorization code
| Campo |
Valor |
grant_type |
authorization_code |
client_id |
client_id do app |
client_secret |
client_secret do app |
code |
O código recebido na redirect_uri |
redirect_uri |
A mesma usada na autorização |
code_verifier |
O verifier da mesma sessão |
Refresh
| Campo |
Valor |
grant_type |
refresh_token |
client_id |
client_id do app |
client_secret |
client_secret do app |
refresh_token |
O refresh token guardado |
Erros da autorização
Recusas que acontecem antes de o usuário chegar à aprovação. O código vem no
corpo da resposta.
| Código |
HTTP |
Significado |
Como resolver |
oauthapp.unknownclient |
400 |
client_id não corresponde a nenhum app registrado |
Confira o client_id copiado do painel |
oauthapp.redirecturi |
400 |
redirect_uri não está entre as cadastradas |
Compare caractere a caractere com o cadastro |
oauthapp.pkcerequired |
400 |
Pedido sem code_challenge |
Gere o PKCE e envie o challenge |
oauthapp.pkcemethod |
400 |
code_challenge_method diferente de S256 |
Use S256 |
oauthapp.unsupportedresponsetype |
400 |
response_type diferente de code |
Use code |
oauthapp.disabled |
403 |
App desativado pelo dono ou pela Gubee |
Reative na tela do app ou fale com a Gubee |
oauthapp.alreadyauthorized |
403 |
O usuário já autorizou este app por outra conta |
Revogue em Apps conectados e autorize de novo |
oauthapp.masteraccount |
403 |
A conta usada não é a que opera o sistema |
Autorize com uma conta operacional |
oauthapp.accountnotfound |
403 |
Conta não encontrada |
Confirme a conta usada no login |
oauthapp.scopeempty |
400 |
App registrado sem nenhuma permissão |
Edite o app no painel e defina o que ele acessa |
Erros da troca de token
| Erro |
Causa |
Como resolver |
invalid_grant |
code já usado, expirado, ou code_verifier de outra sessão |
Refaça o fluxo desde a autorização |
unauthorized_client |
client_secret incorreto, ou app sem permissão para este fluxo |
Confira o secret; verifique se ele foi rodado |
invalid_client |
client_id não corresponde a nenhum app |
Confira o client_id copiado do painel |
Erros das chamadas de API
| HTTP |
Causa |
Como resolver |
401 |
access_token ausente, malformado ou expirado |
Envie Authorization: Bearer <token>; renove se expirado |
403 |
O app não tem permissão para a operação, ou o acesso foi revogado |
Leia required_scope no corpo: são as permissões aceitas pela operação (Permissões dos apps). Peça nova autorização se o acesso foi revogado |
Regras e limites
| Regra |
Detalhe |
| Fluxo suportado |
Authorization code com PKCE S256 |
Esquema da redirect_uri |
https obrigatório; localhost e 127.0.0.1 liberados para desenvolvimento |
Curinga na redirect_uri |
Não aceito |
Comparação da redirect_uri |
Exata, incluindo barra final e maiúsculas |
| URIs por app |
Várias, uma por ambiente |
| Client secret |
Um vigente por app; rodar invalida o anterior imediatamente |
| Interruptores |
Dois — do dono e da Gubee; o app só funciona com ambos ligados |
| Revogação pelo seller |
Integrações → Apps conectados |
| Revogação em massa pelo dono |
Tela do app → Revogar todos os sellers |
Onde cada coisa é documentada