logo
logo

Docs / Autenticação

O iFood fornece dois fluxos de autorização para que o seu aplicativo seja capaz de acessar recursos das lojas: o fluxo de credencial de aplicativo e o fluxo de código de autorização. Através desses fluxos, seu aplicativo será capaz de adquirir um token de acesso e assim ser capaz de consumir as nossas APIs.

Protocolo HTTPS Toda comunicação com as APIs do iFood requerem o uso de HTTPS, com TLS 1.2 ou superior. Caso essas condições não sejam atendidas, as APIs não funcionarão. Além disso, o envio de credenciais via HTTP é uma grave falha de segurança e é desencorajada sob quaisquer circunstâncias.

Fluxo de credencial de aplicativo

O fluxo de credencial de aplicativo é destinado a aplicativos internos/privados, que não são acessiveis diretamente pela internet. Tais aplicativos também devem ser capazes de armazenar a chave secreta no seu servidor com segurança. Um exemplo de aplicativo apropriado para esse fluxo são aplicativos que rodam dentro de uma VPC sem acesso externo, como um servidor que expõem APIs com base nas APIs do iFood.

No fluxo de credencial de aplicativo, para autenticar seu aplicativo e ser capaz de usar nossas APIs, você precisará de uma credencial de aplicativo. A credencial de aplicativo pode ser obtida via Portal do Desenvolvedor (no menu Meus Apps, aba Credenciais do aplicativo selecionado).

  • O clientId representa a identificação única do cliente (nesse caso o aplicativo);
  • O clientSecret é a chave secreta utilizada para obter um novo token de acesso. Essa chave não pode ser exposta e deve ser armazenada de forma segura.

As etapas do fluxo de credencial de aplicativo são apresentadas no diagrama abaixo. Detallhes de cada etapa são encontrados nas subseções posteriores.

AplicativoServiço de autorização do iFoodiFood API1. Solicita o token de acesso enviando as credenciais do aplicativoPOST /authentication/v1.0/oauth/token2. Aplicativo recebe token de acessotoken de acesso3. Aplicativo usa token para acessar recursos das lojas via as APIs do iFoodGET /merchant/v1.0/merchants/:merchantIdinformações da lojaAplicativoServiço de autorização do iFoodiFood API

Após a criação do aplicativo no Portal do Desenvolvedor, o aplicativo deve usar seu clientId e clientSecret para solicitação de um token de acesso via a nossa API de token.

A resposta da API de token conterá o token de acesso para consumo de nossas APIs. Não geramos refresh tokens para esse fluxo.

Uma vez que o token de acesso é obtido, você poderá utiliza-lo via autenticação HTTP do tipo Bearer.

O fluxo de credencial de aplicativo é utilizado para aplicativos centralizados. O passo a passo prático da autenticação via fluxo de credenciais de aplicativo também se encontra no nosso canal para a pessoa desenvolvedora, apresentado abaixo.

Fluxo de código de autorização

O fluxo de código de autorização é destinado a aplicativos públicos que são acessíveis via internet. Esse fluxo não depende apenas de uma credencial de aplicativo. Em outras palavras, esse fluxo exige que a pessoa que tenha acesso aos recursos da loja seja capaz de se autenticar via Portal do Parceiro e delegar a autorização solicitada pelo aplicativo. O fluxo de código de autorização é apresentado no diagrama abaixo. Detallhes de cada etapa são encontrados nas subseções posteriores.

AplicativoServiço de autorização do iFoodPortal do ParceiroiFood API1. Solicita código de vínculoPOST /authentication/v1.0/oauth/userCode2. Recebe código de vínculo de código verificadorcódigo de vínculo + código verificador3. Usa código de vínculo no Portal do ParceiroGET /apps/code?c=WGXX-GQFC4. Após autorizar o aplicativo, o código de autorização é digitado no aplicativocódigo de autorização5. Solicita token de acesso com código de autorização e código verificadorPOST /authentication/v1.0/oauth/token6. Aplicativo recebe token de acesso e refresh tokentoken de acesso + refresh token7. Aplicativo usa token para acessar recursos das lojas via as APIs do iFoodGET /merchant/v1.0/merchants/:merchantIdinformações da lojaAplicativoServiço de autorização do iFoodPortal do ParceiroiFood API

O primeiro passo é solicitar um código de vínculo. Esse código de vínculo é obtido via nossa API de geração de código de vínculo e deve ser a primeira requisição que o aplicativo realiza. Esse código de vínculo representa um alias para seu aplicativo. Posteriormente, esse código é utilizado no Portal do Parceiro pela pessoa dona da loja para que assim ela seja capaz de autorizar seu aplicativo à acessar os recursos da loja da mesma.

Além do código de vínculo, apresentado anteriormente, a mesma API de código de vínculo também retorna o código verificador. Esse código serve para aumentar a segurança na requisição do token de acesso. Logo, o aplicativo precisa manter esse código de forma segura até chegar o passo de obtenção do token, que depende do código verificador para ser gerado.

Seu aplicativo deve ser capaz de mostrar o código de vínculo e a URL de verificação para as pessoas usuárias para que assim elas sejam capazes digitar esse código no portal do parceiro. Ao digitar o código de vínculo, a pessoa poderá autorizar (ou não) o acesso de seu aplicativo aos recursos da loja.

Uma vez que seu aplicativo é autorizado pela pessoa dona da loja, a pessoa receberá um código de autorização no próprio Portal do Parceiro. Esse código deverá ser digitado no seu aplicativo para que assim, posteriormente, o aplicativo seja capaz de solicitar um token de acesso.

Uma vez que seu aplicativo obtem o código de autorização, que é digitado pela pessoa dona da loja, seu aplicativo deve enviar não somente o código de autorização, mas também o código de verificação, obtido anteriormente junto do código de vínculo, para a nossa API de token

Uma vez que o código de autorização e o código de verificação são válidos, seu aplicativo obterá não somente o token de acesso, mas também, o refresh token. Para que a pessoa usuária não precise passar pelos passos anteriores quando o token de acesso expirar, é necessário que o aplicativo seja capaz de usar o refresh token posteriormente e assim obter um novo token de acesso.

Uma vez que o token de acesso é obtido, você poderá utiliza-lo via autenticação HTTP do tipo Bearer.

O fluxo de código de autorização é utilizado para aplicativos distribuídos. O passo a passo prático da autenticação via fluxo de código de autorização também se encontra no nosso canal para a pessoa desenvolvedora, apresentado abaixo.

Expiração de códigos e tokens

Ao solicitar um código (de vínculo ou de autorização) ou token (de acesso ou refresh) com sucesso, o retorno conterá não somente o código ou token, mas também um atributo expiresIn, que representa o período de validade do retorno. A tabela abaixo apresenta os tempos de expiração padrões de cada token e código.

Código/TokenExpiração
Token de acesso6 horas
Refresh token168 horas
Código de vínculo10 minutos
Código de autorização5 minutos

É importante ressaltar que os tokens e códigos são válidos apenas durante esse período de tempo. No caso dos códigos, deverão ser gerados novamente após esse período. Já no caso dos tokens, se o token de acesso expirar e o meio de autorização fornecer o refresh token, basta usa-lo para renovar o token de acesso. Já caso o refresh token expire, será necessário a criação de um novo token via endpoint de token.

Rate Limit Você não precisa gerar um novo token enquanto o anterior não expirar. Cuidado para não requisitar um novo token antes de cada request na API para não ser bloqueado.

Assim que o token de acesso expirar, todas as chamadas que o utilizam retornarão o status 401, o que indica que o mesmo deve ser renovado.