OAuth2.0 - Refresh or renew the access token

POST https://bakrypt.io/auth/token/ || https://testnet.bakrypt.io/auth/token/;

Some time has passed, and your access token is about to expire; you can get renew the access token issued using the refresh token:

e.g.,

import express from 'express';
import axios from 'axios';

interface AccessToken {
  access_token: string;
  expires_in: number;
  token_type: string;
  scope: string;
  refresh_token: string;
}

interface ErrorResponse {
  error: string;
  error_description?: string;
}

const app = express();
const externalApiUrl = 'https://bakrypt.io/auth/token/' || 'https://testnet.bakrypt.io/auth/token/';
const clientId = `$client_id`;
const clientSecret = `$client_secret`;

app.use(express.json());

app.post('/refresh', async (req, res) => {
  try {
    const { refreshToken } = req.body;
    
    const payload = new URLSearchParams();
    payload.append("client_id", clientId);
    payload.append("client_secret", clientSecret);
    payload.append("refresh_token", refreshToken);
    payload.append("grant_type", "refresh_token");

    const config = {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    };

    const response = await axios.post<AccessToken | ErrorResponse>(externalApiUrl, payload, config);

    res.send(response.data);
  } catch (error) {
    console.error(error);
    // Handle error accordingly 
    res.status(500).send('Internal Server Error');
  }
});

app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});
import requests
try:
    from typing import TypedDict
except Exception as e:
    from typing_extensions import TypedDict



class AccessToken(TypedDict):
    access_token: str
    expires_in: int
    token_type: str
    scope: str
    refresh_token: str


class ErrorResponse(TypedDict):
    error: str
    error_description: str


CLIENT_ID = '$client_id'
CLIENT_SECRET = '$client_secret'
REFRESH_TOKEN = '$resource_refresh_token'

payload = {
    'client_id': CLIENT_ID,
    'client_secret': CLIENT_SECRET,
    'refresh_token': REFRESH_TOKEN,
    'grant_type': 'refresh_token'
}

access_token_request = requests.post(
    'https://testnet.bakrypt.io/auth/token/',
    data=payload,
    headers={'content-type': "application/x-www-form-urlencoded"})

if access_token_request.status_code in [200]:
    access_token: AccessToken = access_token_request.json()
    print(access_token)
else:
    print("Error retrieving access token...")
    print(access_token_request.text)