Autenticação e autorização
O processo de autenticação para as APIs segue o protocolo oAuth 2.0, via fluxo Authorization Code. Nesse fluxo, sua aplicação terá acesso às informações de usuários através da autorização dos mesmos. Caso você não possua as credenciais client_id
e client_secret
de uma aplicação cliente, será necessário criar sua aplicação (vide seção Como criar sua aplicação).
Vídeo de instruções para autenticação
Passo 1: Solicitar consentimento ao Seller
Existem duas formas de obter o consentimento do seller:
- Usar o botão de consentimento, que simplifica o processo.
- Gerar URL de consentimento, seguindo os passos descritos no vídeo acima.
- Botão 'Autorizar com o ID Magalu'
- Gerar URL 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.
Após o consentimento, o ID Magalu redirecionará o seller com as informações necessárias para continuar a autenticação na sua aplicação.
Pré-requisitos
Antes de adicionar o botão, certifique-se de:
- Ter configurado seu client com os escopos que serão utilizados. Configure os escopos como padrão para o que ID Magalu sempre solicite os consentimentos para estes.
- Possuir os valores de
client_id
,redirect_uri
escopes
(caso não configure escopos como padrão).
Implementação
Para adicionar o botão, será necessário prover alguns atributos ao componente. Eles são:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
client-id | string | ID público da aplicação cliente no ID Magalu | Sim |
redirect-uri | string | URI de redirecionamento do cliente, que receberá o código de autorização (AUTHORIZATION_CODE ) | Sim |
state | string | Uma string alfanumérica que seu aplicativo adiciona à solicitação inicial que o ID Magalu inclui ao redirecionar de volta para seu aplicativo. Pode ser utilizado para identificar qual seller realizou o consentimento. | Nao |
scope | string | Escopos que devem ser solicitados para consentimento. Esse campo pode ser utilizado caso seu APP não possua escopos padrão ou sejam necessários passar escopos extra. Exemplo: scope_1 scope_2 scope_3 | Nao |
Exemplo:
<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="<informacao de estado para identificar o seller>"
scope="<escopos separados por espaço>"
></div>
</body>
Neste procedimento, sua aplicação deverá montar a URL com os atributos necessários para realização do consentimento e efetuar uma requisição GET
. Os atributos que devem ser passados para o ID Magalu são listados na tabela abaixo.
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
client_id | string | ID público da aplicação cliente no ID Magalu | Sim |
redirect_uri | string | URL de redirecionamento do cliente, que receberá o código de autorização (AUTHORIZATION_CODE ) | Sim |
scope | string | Escopos de consentimento. Exemplo: scope_1 scope_2 scope_3 | Sim |
response_type | string | Valor padrão a ser enviado será sempre code .response_type=code Código de autorização do usuário quer será retornado na REDIRECT_URI | Sim |
choose_tenants | string | Valor padrão a ser enviado será sempre true .choose_tenants=true permite que seja selecionada a organização (loja) que está consentindo. Se for igual a false o consentimento é aplicado para o usuário que logou, que é uma pessoa física. | Sim |
state | string | Uma string alfanumérica que seu aplicativo adiciona à solicitação inicial que o ID Magalu inclui ao redirecionar de volta para seu aplicativo. Pode ser utilizado para identificar qual seller realizou o consentimento. | Não |
Logo, monte uma URL conforme o exemplo abaixo e redirecione o usuário para o ID Magalu:
https://id.magalu.com/login?client_id=<CLIENT_ID>&redirect_uri=<REDIRECT_URI>&scope=<SCOPES>&response_type=code&choose_tenants=true
Exemplo de chamada:
https://id.magalu.com/login?client_id=fSbG5kB3iv5x9sLioaweMSaw3Qhb5xlTC3JpxGFdpd0&redirect_uri=http://localhost:3000/redirect&scope=open:portfolio:read open:order-order:read&response_type=code&choose_tenants=true
Em ambos os casos, a tela de login do ID Magalu aparecerá para o usuário, ele deverá logar com as credenciais da loja:

Passo 2: O usuário concederá permissão para que a aplicação acesse suas informações
Se houver permissões para serem concedidas, a seguinte tela aparecerá para o usuário:

Caso as permissões já tenham sido concedidas em algum momento, esta tela não será exibida ao usuário.
Após realizar login e dar permissões, o usuário será redirecionado para a REDIRECT_URI, onde virá o código de autorização (code
). Segue abaixo um exemplo de como localizar este código de autorização diretamente na barra de endereços do navegador:

Passo 3: A partir do código de autorização concedido pelo usuário, crie um token de acesso às APIs da plataforma
Chamada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
client_id | string | ID público da aplicação cliente no ID Magalu | Sim |
client_secret | string | Segredo da aplicação cliente no ID Magalu | Sim |
redirect_uri | string | URL de redirecionamento do cliente, que receberá o código de autorização (AUTHORIZATION_CODE ) | Sim |
code | string | Código de autorização (code ) do usuário retornado na REDIRECT_URI | Sim |
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": "<AUTHORIZATION_CODE>",
"grant_type": "authorization_code"
}
'
Resposta:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
client_id | string | ID público da aplicação cliente no ID Magalu | Sim |
redirect_uri | string | URL de redirecionamento do cliente, que receberá o código de autorização (AUTHORIZATION_CODE ) | Sim |
code | string | Código de autorização (code ) do usuário retornado na REDIRECT_URI | Sim |
access_token | string | Token JWT de acesso às APIs da plataforma | Sim |
refresh_token | string | Token JWT do fluxo de refresh | Sim |
token_type | string | Tipo do token. Exemplo: Bearer | Sim |
expires_in | integer | Expiração dos tokens JWT | Sim |
created_at | timestamp | Data de criação dos tokens JWT | Sim |
{
"access_token": "<ACCESS_TOKEN>",
"token_type": "<TOKEN_TYPE>",
"expires_in": "<EXPIRES_IN>",
"refresh_token": "<REFRESH_TOKEN>",
"scope": "<SCOPES>",
"created_at": "<CREATED_AT>"
}
Renovação do token
Para realizar o processo de renovação do token (refresh_token
), execute a seguinte chamada:
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_ID>' \
--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>"
}