# Trocar o código recebido por um access_token 🔑 ### 🔄 Trocar o Código de Autorização por Tokens Após a etapa inicial, onde o cliente Conta Azul concede permissão à sua aplicação e você recebe um código de autorização, o próximo passo crucial no fluxo do OAuth 2.0 é **trocar esse código por um token de acesso (`access_token`)**. É esse `access_token` que sua aplicação usará para acessar os recursos protegidos do cliente Conta Azul por meio da API. **Nosso Endpoint de requisição do token de acesso:** `https://auth.contaazul.com/oauth2/token` ### **O que acontece?** Nesta fase, sua aplicação faz uma requisição diretamente para o servidor de autorização (e não para o navegador) para trocar o código temporário por um token de acesso de longa duração. É um processo **seguro e servidor-para-servidor**, o que significa que as credenciais sensíveis da sua aplicação (`client_secret`) não são expostas ao usuário final. ## Como fazer? **Exemplo de Requisição API (usando cURL)**: ```bash curl -X POST https://auth.contaazul.com/oauth2/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Authorization: Basic BASE64(SEU_CLIENT_ID:SEU_CLIENT_SECRET) --data-urlencode "client_id=SEU_CLIENT_ID" \ --data-urlencode "client_secret=SEU_CLIENT_SECRET" \ --data-urlencode "grant_type=authorization_code" \ --data-urlencode "code=CODIGO_AUTORIZACAO" \ --data-urlencode "redirect_uri=SUA_URL_REDIRECIONAMENTO" ``` Essa requisição POST contém vários parâmetros que informam ao servidor de autorização sobre sua solicitação: | Parâmetro | Valor | Valor Fixo? | Finalidade | Detalhes | | --- | --- | --- | --- | --- | | Authorization | Basic BASE64(client_id:client_secre) | Não | Este é um cabeçalho HTTP necessário. Ele contém seu client_id e client_secret combinados (client_id:client_secret) e codificados em Base64 | Para mais detalhes sobre a codificação em Base64, consulte o guia FAQ dessa documentação | | client_id | Disponível nos detalhes da sua integração no Portal do Desenvolvedor | Não | Identificador único do aplicativo | - | | client_secret | Disponível nos detalhes da sua integração no Portal do Desenvolvedor | Não | Identificador que comprova a identidade do aplicativo | - | | grant_type | Authorization_code | Sim | Indica a troca de um código de autorização por um token de acesso | - | | code | Código de autorização obtido na etapa anterior do fluxo OAuth 2.0 | Não | Usado para validar a requisição e garantir que a troca está ocorrendo para o aplicativo correto | É crucial que o código de autorização seja exatamente o mesmo recebido na etapa anterior e que seja usado dentro do seu prazo de validade (3 minutos) | | redirect_uri | Disponível nos detalhes da sua integração no Portal do Desenvolvedor | Não | Validar que a requisição de troca está sendo feita pela mesma aplicação cliente que iniciou o processo | É crucial que esta URL seja **exatamente igual** à URL informada na integração pelo Portal do Desenvolvedor, ao contrário o servidor irá **rejeitar a requisição de troca do token** | Se a requisição for bem sucedida, o servidor de autorização responderá com um JSON contendo dois tokens importantes: access_token e o refresh_token: ### Exemplo de resposta: ```json { "access_token": "ACCESS_TOKEN_GERADO", "expires_in": 3600, "refresh_token": "REFRESH_TOKEN_GERADO", "token_type": "Bearer" } ``` É necessário salvar cada um desses tokens de forma segura, pois eles são importantes para os próximos passos do fluxo OAuth 2.0. Abaixo está algumas informações importantes: | Token | Validade | Finalidade | | --- | --- | --- | | access_token | 3600 segundos (1 hora) | Este token é a credencial da sua integração para fazer requisições autenticadas e autorizadas aos recursos da API | | refresh_token | 5 anos ou até próxima renovação do access_token | Este token é de uso mais prolongado e seguro. Usado para renovar o access_token quando ele expira. Deve ser armazenado de forma segura. Deve-se armazenar um novo refresh_token em toda requisição de renovação do access_token | Com o access_token é possível fazer chamadas autenticadas à API da Conta Azul, acessando os dados do cliente Conta Azul vinculado ao seu aplicativo. Quando o access_token expirar, você usará o refresh_token para obter um novo, garantindo que a conexão com a API possa ser mantida sem a necessidade de uma nova autenticação. Para utilizar o access_token consulte o passo “**[Fazendo Chamadas à API com o Access Token](https://developers.contaazul.com/makingcalls)**” e para renová-lo consulte o passo “**[Renovando seu Access Token (Essencial para Acesso Contínuo)](https://developers.contaazul.com/renewingaccesstoken)**".