Token de integração da API do Magento 2: gerar e usar no header Bearer

Você chamou GET /rest/V1/products e voltou 401 com The consumer isn't authorized to access %resources (em loja mais velha a mensagem é Consumer is not authorized to access %resources). O token existe, o curl está escrito certo, e mesmo assim o Magento nega. Faltam duas coisas: ativar a integração e marcar os recursos que ela pode acessar.

Criar e ativar a integração

No admin, System > Extensions > Integrations > Add New Integration. Preencha o nome e, na aba API, escolha o Resource Access. Marcar All resolve na hora, mas o certo é marcar só o que o cliente vai consumir. Salve, volte na listagem e clique em Activate, depois Allow: é só nesse popup que o Access Token aparece.

Se você marcou os recursos e o 401 continua, o motivo costuma ser este — da 2.4.4 em diante o token de integração só vale como Bearer com a flag ligada:

bin/magento config:set oauth/consumer/enable_integration_as_bearer 1
bin/magento cache:flush

curl -s 'https://sualoja.com.br/rest/V1/products?searchCriteria[pageSize]=1' 
  -H 'Authorization: Bearer SEU_ACCESS_TOKEN' 
  -H 'Content-Type: application/json'

Quando você quer um token de admin temporário

curl -s -X POST 'https://sualoja.com.br/rest/V1/integration/admin/token' 
  -H 'Content-Type: application/json' 
  -d '{"username":"roger","password":"MinhaSenhaForte1"}'

A resposta é a string do token entre aspas e vale 4 horas por padrão (Stores > Configuration > Services > OAuth > Access Token Expiration). Com o 2FA ligado, que é o padrão desde a 2.4, esse endpoint devolve erro: o caminho é autenticar no endpoint do seu provedor, tipo POST /V1/tfa/provider/google/authenticate mandando username, password e otp. Não desative o Magento_TwoFactorAuth em produção só pra encurtar isso.

Pra robô e ERP, fique no token de integração: ele não expira, tem ACL própria e você revoga clicando em Deactivate, sem trocar a senha de ninguém.

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *