# Trocar o código recebido por um access_token 🔑

### 🔄 Trocar o Código de Autorização por Tokens

Agora que você realizou a Etapa 1,  onde o cliente Conta Azul concede permissão à sua aplicação e você recebe um código de autorização, a Etapa 2 consiste em **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.

### **Como realizar?**

Para esta chamada, é necessário incluir no cabeçalho da requisição a autorização do tipo **Basic**, utilizando seu `SEU_CLIENT_ID` e `SEU_CLIENT_SECRET` codificados em Base64.

Você pode gerar o valor em Base64 clicando aqui e informando o conteúdo no seguinte formato: `SEU_CLIENT_ID:SEU_CLIENT_SECRET`


```bash
curl --location 'https://auth.contaazul.com/oauth2/token' \
--header 'Authorization: Basic BASE64(SEU_CLIENT_ID:SEU_CLIENT_SECRET)' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'code=CODIGO_AUTORIZACAO' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'redirect_uri=SUA_URL_REDIRECIONAMENTO'
```

### Exemplo de resposta


```bash
{
  "access_token": "ACCESS_TOKEN_GERADO",
  "expires_in": 3600,
  "refresh_token": "REFRESH_TOKEN_GERADO",
  "token_type": "Bearer"
}
```

### Entendendo os tokens:

- **`access_token`**: usado para autenticar chamadas futuras à API.
- **`refresh_token`**: usado para renovar o `access_token` após a expiração.


> **Atenção**
É 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 |