Pular para o conteúdo principal

Obter Autorização do Seller via OAuth 2.0

O processo de autenticação para as APIs do Magalu segue o protocolo OAuth 2.0, utilizando o fluxo Authorization Code. Este fluxo permite que sua aplicação obtenha acesso seguro às informações dos sellers através da autorização explícita dos mesmos.

pré-requisito

Antes de implementar a autenticação, certifique-se de ter criado um cliente de aplicação e ter em mãos seu client_id e client_secret. Se você ainda não possui essas credenciais, consulte a seção Como Criar e Configurar um Cliente.
Também é importante garantir que seu cliente esteja configurado corretamente com os escopos necessários.

Vídeo de Instruções para Autenticação

Passo a Passo para Autenticação OAuth 2.0

1

Solicitar consentimento do seller

Para iniciar o processo de autenticação, você precisa redirecionar o seller para uma página de consentimento onde ele autorizará sua aplicação a acessar suas informações.

Existem duas formas de implementar esta etapa:

  1. Usar o botão de consentimento do Magalu - Solução mais simples e recomendada
  2. Gerar URL de consentimento customizada - Ideal para testar o fluxo de consentimento

Implementação do Botão de Consentimento

Adicione um botão "Autorizar com o ID Magalu" ao seu site para que os sellers possam realizar o login diretamente no ID Magalu e conceder as permissões solicitadas pela sua aplicação.

Imagem Botao Consentimento
vantagem

Após o consentimento, o ID Magalu redirecionará automaticamente o seller com as informações necessárias para continuar a autenticação na sua aplicação.

Parâmetros do componente

CampoTipoDescriçãoObrigatório
client-idstringID público da aplicação cliente no ID MagaluSim
redirect-uristringURI de redirecionamento do cliente que receberá o código de autorização OAuth 2.0Sim
statestringString alfanumérica que sua aplicação adiciona à solicitação inicial. O ID Magalu incluirá este valor ao redirecionar de volta para sua aplicação. Útil para identificar qual seller realizou o consentimentoNão
scopestringEscopos adicionais que devem ser solicitados para consentimento. Importante: Estes escopos serão combinados com os escopos padrão (--scopes-default) configurados no client. O seller verá: escopos padrão + escopos definidos aqui. Use este campo para solicitar escopos extras além dos padrão.Não

Exemplo de implementação:

<html>
<head>
<script type="module" src="https://openapi.magalu.com/script/script.js" async></script>
</head>

<body>
<div
class="magalu-consent-content"
client-id="<client_id>"
redirect-uri="<redirect_uri>"
state="<informação de estado para identificar o seller>"
scope="<escopos separados por espaço>"
></div>
</body>
</html>
2

Fazer login no ID Magalu (etapa executada pelo seller)

Independentemente do método escolhido, o seller será direcionado para a tela de login do ID Magalu:

Imagem Login ID Magalu
importante

O seller deve usar as credenciais da loja (pessoa jurídica) para acessar os recursos de seller. Login com credenciais de pessoa física pode não ter acesso aos escopos necessários.

3

Autorizar escopos (etapa executada pelo seller)

Após fazer login, o sistema verifica se existem permissões pendentes de autorização. Se houver escopos que ainda não foram concedidos pelo seller, a tela de consentimento será apresentada:

Imagem Permissões de Acesso

Nesta tela, o seller pode:

  • Revisar quais permissões estão sendo solicitadas
  • Acessar os termos de uso e política de privacidade da aplicação
  • Autorizar ou negar o acesso aos escopos solicitados
importante

Se o seller já concedeu todas as permissões solicitadas em uma sessão anterior, esta tela será omitida e ele será redirecionado diretamente para a próxima etapa do fluxo.

Termos de Uso e Política de Privacidade

Durante esta etapa, o seller terá acesso aos links dos Termos de Uso e Política de Privacidade da sua aplicação, configurados através dos parâmetros --terms-of-use e --privacy-term durante a criação do client. Certifique-se de que essas URLs estejam acessíveis e contenham informações claras sobre o uso dos dados.

4

Receber o código de autorização

Após a autorização dos escopos, o protocolo OAuth 2.0 é finalizado com o redirecionamento automático do seller para a REDIRECT_URI configurada no seu client. O ID Magalu anexará o código de autorização como um query parameter na URL de callback.

Estrutura do redirecionamento:

A URL de callback seguirá o padrão OAuth 2.0 padrão:

https://sua-aplicacao.com/callback?code=CODIGO_DE_AUTORIZACAO&state=SEU_STATE

Exemplo do redirecionamento:

Imagem Code

Parâmetros retornados:

  • code: Código de autorização temporário que deve ser trocado por tokens de acesso
  • state: Valor de estado enviado na requisição inicial (se fornecido)
importante

Segurança e Validade:

  • O código de autorização possui validade limitada de 10 minutos
  • Deve ser utilizado imediatamente para obter os tokens de acesso
  • É de uso único - não pode ser reutilizado após a troca por tokens
  • Esta limitação temporal é uma medida de segurança essencial do protocolo OAuth 2.0
5

Trocar o código por tokens de acesso

Com o código de autorização em mãos, sua aplicação deve executar uma requisição server-to-server para trocar o código temporário por tokens de acesso permanentes. Esta é a etapa final do fluxo OAuth 2.0 Authorization Code.

Parâmetros da requisição:

CampoTipoDescriçãoObrigatório
grant_typestringDeve ser authorization_code para este fluxoSim
client_idstringID público da aplicação cliente no ID MagaluSim
client_secretstringSegredo da aplicação cliente no ID MagaluSim
redirect_uristringA mesma URL de redirecionamento utilizada na geração da URL de consentimento ou no botão de consentimento. Este campo é obrigatório para validação de segurança do protocolo OAuth 2.0Sim
codestringCódigo de autorização temporário recebido via query parameter na redirect_uriSim

Exemplo de chamada:

curl --location --request POST 'https://id.magalu.com/oauth/token' \
--header 'Content-Type: application/json' \
--data-raw '{
"client_id": "<CLIENT_ID>",
"client_secret": "<CLIENT_SECRET>",
"redirect_uri": "<REDIRECT_URI>",
"code": "<CODE>",
"grant_type": "authorization_code"
}
'

Resposta:

CampoTipoDescrição
access_tokenstringToken JWT de acesso às APIs da plataforma
refresh_tokenstringToken JWT utilizado para renovar o access_token quando este expirar
token_typestringTipo do token. Sempre será Bearer para este fluxo
expires_inintegerTempo de vida do access_token em segundos (exemplo: 7200 = 2 horas)
scopestringLista de escopos autorizados pelo seller, separados por espaços
created_attimestampTimestamp Unix de quando os tokens foram criados

Exemplo de resposta:

{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 7200,
"refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"scope": "open:portfolio:read open:order-order:read",
"created_at": 1640995200
}
6

Renovar o token de acesso

Para realizar o processo de renovação do token (refresh_token), execute a seguinte chamada:

Exemplo de chamada:

curl --location 'https://id.magalu.com/oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=refresh_token' \
--data-urlencode 'client_id=<CLIENT_ID>' \
--data-urlencode 'client_secret=<CLIENT_SECRET>' \
--data-urlencode 'refresh_token=<REFRESH_TOKEN>'

Resposta:

{
"access_token": "<ACCESS_TOKEN>",
"token_type": "<TOKEN_TYPE>",
"expires_in": "<EXPIRES_IN>",
"refresh_token": "<REFRESH_TOKEN>",
"scope": "<SCOPES>",
"created_at": "<CREATED_AT>"
}