Buscar na documentação
ctrl+4K
Módulos
Authentication
Merchant
Catalog
Order
Events
Logistics
Shipping
Review
Financial
Soluções

Fluxo para aplicativos distribuídos

Use este fluxo quando o aplicativo:
  • É público e acessível pela internet
  • Precisa de autorização explícita do proprietário da loja
Os tokens não podem exceder 8.000 caracteres. Garanta armazenamento adequado para esses tokens.
  1. O proprietário da loja se autentica no Portal do Parceiro
  2. O proprietário autoriza seu aplicativo a acessar recursos específicos da loja
  3. Seu aplicativo recebe permissão para interagir com os dados da loja autorizada
Esse método garante que apenas aplicativos aprovados pelo proprietário acessem os recursos da loja.
Confira o passo a passo de todo o processo de código de autorização e token de acesso:
  1. Obtenha um código de vínculoFaça uma requisição para a API de Autenticação. Este código funciona como identificador temporário do aplicativo.
  2. Armazene o código verificadorA API retorna um código verificador junto com o código de vínculo. Armazene esse código com segurança — você precisará dele para obter o token de acesso.
  3. Compartilhe o código com o usuárioExiba o código de vínculo e a URL do Portal do Parceiro para o usuário. O proprietário da loja deve inserir esse código no Portal do Parceiro para autorizar o aplicativo.
  4. Colete o código de autorizaçãoApós a autorização no Portal, o proprietário recebe um código de autorização que deve fornecer ao aplicativo.
  5. Solicite o token de acessoEnvie o código de autorização (fornecido pelo usuário) e o código verificador (obtido no passo 2) para a API de Autenticação.
  6. Armazene os tokens recebidosA API retorna um token de acesso e um refresh token. Armazene-os com segurança.
  7. Use o token nas requisiçõesInclua o token de acesso nas requisições às APIs do iFood usando autenticação HTTP do tipo Bearer.
  8. Renove o token antes da expiraçãoAtualize o token chamando a API de token com:
  • grantType: refresh_token
  • Credenciais: clientId e clientSecret
  • O refresh token obtido no passo 6
Revogação de acesso: Apenas o usuário que autorizou o aplicativo pode revogar o acesso.

POST /oauth/userCode

Descrição Solicita um código de usuário para vincular aplicativos no Portal do Parceiro e conceder permissões para acessar recursos do comerciante. Este código é essencial para iniciar o fluxo OAuth de autorização.cURL de exemplo
curl -X POST "https://merchant-api.ifood.com.br/authentication/v1.0/oauth/userCode" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "clientId=YOUR_CLIENT_ID"
Campos retornados — Sucesso (200)
CampoDescriçãoExemplo
userCodeCódigo de usuário que vincula o aplicativo ao Portal do Parceiro. Exiba ao usuário para que ele insira no Portal do Parceiro.HJLX-LPSQ
authorizationCodeVerifierCódigo de verificação adicional a ser usado ao solicitar o token de acesso. Mantenha este código até que o token de acesso seja emitido.test123
verificationUrlURL do Portal do Parceiro que permite aos usuários inserir o código de usuário e conceder acesso ao aplicativo. Exiba ao usuário.https://portal.ifood.com.br/apps/code
verificationUrlCompleteURL de verificação completa com o código de usuário como parâmetro de query. Útil para ambientes que permitem clicar e abrir um navegador.https://portal.ifood.com.br/apps/code?c=HJLX-LPSQ
expiresInExpiração do código de usuário em segundos. O código é válido por 10 minutos.600

POST /oauth/token

Descrição Solicita um novo token de acesso para acessar recursos da API. Por padrão, o token expira em 6 horas. Para aplicativos distribuídos, suporta dois tipos de grant: authorization_code e refresh_token.cURL de exemplo — Authorization Code
curl -X POST "https://merchant-api.ifood.com.br/authentication/v1.0/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grantType=authorization_code&clientId=YOUR_CLIENT_ID&clientSecret=YOUR_CLIENT_SECRET&authorizationCode=AUTH_CODE&authorizationCodeVerifier=CODE_VERIFIER"
cURL de exemplo — Refresh Token
curl -X POST "https://merchant-api.ifood.com.br/authentication/v1.0/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grantType=refresh_token&clientId=YOUR_CLIENT_ID&clientSecret=YOUR_CLIENT_SECRET&refreshToken=REFRESH_TOKEN"
Parâmetros de requisição
ParâmetroObrigatórioDescrição
grantTypeSimTipo de grant OAuth. Para aplicativos distribuídos: authorization_code, refresh_token
clientIdSimIdentificador do cliente
clientSecretSimSegredo do cliente
authorizationCodeApenas para authorization_codeCódigo de autorização retornado após a autorização do aplicativo
authorizationCodeVerifierApenas para authorization_codeCódigo verificador retornado na requisição de código de usuário. A requisição falhará se este código não estiver presente ou não corresponder ao retornado.
refreshTokenApenas para refresh_tokenToken de refresh retornado após a solicitação de um token de acesso. Disponível apenas em aplicativos distribuídos.
Campos retornados — Sucesso (200)
CampoDescriçãoExemplo
accessTokenJWT representando o token de acessoeyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJlNjkwYjczZC01OTI4LTRkMTctODE2ZC01Y2Y5YjgyZTJhOWUiLCJhdWQiOiJvcmRlciIsInVzZXJfbmFtZSI6ImU2OTBiNzNkLTU5MjgtNGQxNy04MTZkLTVjZjliODJlMmE5ZSIsInNjb3BlIjpbIm9yZGVyIl0sInRlbmFudElkIjoiNmFjNjkxZDEtMjZjNi00ZmVkLWJmN2ItOTEwMzJkNTM4NWZkIiwiaXNzIjoiaUZvb2QiLCJtZXJjaGFudF9zY29wZSI6WyI2YjQ4N2EyNy1jNGZjLTRmMjYtYjA1ZS0zOTY3YzIzMzE4ODI6b3JkZXIiXSwiZXhwIjoxNjEyMjMwNDU5LCJpYXQiOjE2MTIyMDg4NTksIm1lcmNoYW50X3Njb3BlZCI6dHJ1ZSwiY2xpZW50X2lkIjoiZTY5MGI3M2QtNTkyOC00ZDE3LTgxNmQtNWNmOWI4MmUyYTllIiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9DTElFTlQiXX0.lYqdxjHoOksq8COqJ-VZxzd524MhVzH7hkMfp5zGTpqzp26z5XJwOPHAy7L6oyagUgRfxntKeu0Up_JHgJ-Vr0h5Y9wY4XHcK1yxpFXFB5f5ilGDB0hVN3UGa4GBqeVpCbAPQUl4VhbF2byeL9PuO4TfTZmoWyuec9-xEH_nbHg
typeTipo do token. Atualmente, o único tipo suportado é bearerbearer
expiresInTempo de expiração do token em segundos21600
Campos retornados — Erro Unauthorized (401)
CampoDescriçãoExemplo
error.codeCódigo de erro para requisições não autorizadasUnauthorized
error.messageDescrição de erro legívelBad credentials
Campos retornados — Erro Internal Server (500)
CampoDescriçãoExemplo
error.codeCódigo de erro para erros internosInternalServerError
error.messageDescrição de erro legívelUnexpected error
O vídeo abaixo demonstra a implementação do fluxo de credencial de aplicativo para aplicativos distribuídos:
Esta página foi útil?
Avalie sua experiência no novo Developer portal: