Axios OAuth Client

2.2.0 · active · verified Tue Apr 21

axios-oauth-client is a utility library designed to simplify the implementation of various OAuth 2.0 grant types when using the Axios HTTP client. Currently at version 2.2.0, it provides dedicated functions for common flows such as Authorization Code, Owner Credentials (Resource Owner Password Credentials), Client Credentials, and Refresh Token grants. The library integrates directly with Axios, allowing developers to instantiate OAuth client functions with an Axios instance, a token endpoint URL, and client credentials. It streamlines the process of obtaining access tokens by handling the underlying HTTP requests and OAuth 2.0 specific parameter encoding. A key differentiator is its straightforward, function-based API specifically tailored for Axios users, focusing on providing the primitives for token acquisition rather than a comprehensive OAuth client state management system. This means users are responsible for token storage, renewal logic, and attaching tokens to subsequent requests. It's built for Node.js environments (engines >= 14) and ships with TypeScript types, ensuring type safety for its users.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates how to obtain an access token using the Client Credentials grant and then refresh it.

import axios from 'axios';
import { clientCredentials, refreshToken } from 'axios-oauth-client';

const tokenEndpoint = 'https://oauth.com/2.0/token';
const clientId = process.env.OAUTH_CLIENT_ID ?? 'YOUR_CLIENT_ID';
const clientSecret = process.env.OAUTH_CLIENT_SECRET ?? 'YOUR_CLIENT_SECRET';

async function authenticateAndRefresh() {
  const axiosInstance = axios.create();

  // Client Credentials Grant
  console.log('Attempting Client Credentials grant...');
  const getClientCredentials = clientCredentials(
    axiosInstance,
    tokenEndpoint,
    clientId,
    clientSecret
  );
  const initialAuth = await getClientCredentials('read write');
  console.log('Initial access token acquired:', initialAuth.access_token);

  // Simulate refreshing the token
  if (initialAuth.refresh_token) {
    console.log('Attempting Refresh Token grant...');
    const getRefreshToken = refreshToken(
      axiosInstance,
      tokenEndpoint,
      clientId,
      clientSecret
    );
    const refreshedAuth = await getRefreshToken(initialAuth.refresh_token, 'read write');
    console.log('Refreshed access token acquired:', refreshedAuth.access_token);
  } else {
    console.log('No refresh token available from client credentials grant. Skipping refresh example.');
  }
}

authenticateAndRefresh().catch(error => {
  console.error('Authentication error:', error.response?.data || error.message);
});

view raw JSON →