npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@manisharma7575/oauthx

v1.0.3

Published

A lightweight and developer-friendly OAuth 2.0 client library for secure authentication and seamless token management. OAuthx simplifies the integration of OAuth 2.0 authentication flows, including authorization code, PKCE and refresh token handling.

Downloads

116

Readme

@manisharma7575/oauthx

OAuthX is a lightweight OAuth 2.0 client library that simplifies authentication using the Authorization Code flow with PKCE. It provides easy-to-use methods for generating authorization URLs, handling authentication callbacks, and refreshing access tokens.

OAuth Flow Supported:

  • Authorization Code
  • PKCE
  • Implicit

Scope of Improvement

  • Example for the Server Side Rendering
  • Integrating Client Credentials Flow
  • Jest test

Installation

Install the package via npm:

npm install @manisharma7575/oauthx

Demo Application

https://oauthx.netlify.app/

cd examples/my-oauth-client-app

Make sure the credentails are set in the .env file

npm install
npm run dev

Usage

Initialize OAuthXClient

To set up OAuthXClient, provide the necessary OAuth 2.0 configurations:

import { OAuthXClient } from "@manisharma7575/oauthx";

const oauthClient = new OAuthXClient({
  server: "AUTH_SERVER",
  client_id: "CLIENT_ID",
  client_secret: "CLIENT_SECRET",
  redirect_uri: "REDIRECT_URI",
  token_endpoint: "TOKEN_ENDPOINT", // Default Value: "/token"
  authorization_endpoint: "AUTHORIZE_ENDPOINT" // Default Value: "/authorize"
});

Public Methods

getAuthorizeURI(params)

Generates the authorization URL for initiating the OAuth flow.

Params:

  • response_type (string, required) - The response type (e.g., "code", "token").
  • scope (array, required) - The list of scopes.
  • codeVerifier (string, optional) - PKCE code verifier.
  • state (string, optional) - A custom state value.

Example:

const authUrl = await oauthClient.getAuthorizeURI({
  response_type: "code",
  scope: ["openid", "profile", "email", "offline_access"],
  codeVerifier: "random_code_verifier",
  state: "custom_state",
});

window.location.href = authUrl;

handleCallback(params)

Handles the OAuth callback and exchanges the authorization code for an access token.

Params:

  • grant_type (string, required) - The type of grant (e.g., "authorization_code").
  • uri (string, required) - The callback URI containing the authorization code.
  • code_verifier (string, required) - The PKCE code verifier used in the request.
  • state (string, optional) - The state value from the authorization request.

Example:

const tokenResponse = await oauthClient.handleCallback({
  grant_type: "authorization_code",
  uri: window.location.href,
  code_verifier: localStorage.getItem("code_verifier") || "",
  state: "custom_state",
});

console.log(tokenResponse.access_token);

refreshToken(refreshToken, params)

Refreshes the access token using a refresh token.

Params:

  • refreshToken (string, required) - The refresh token.
  • params (object, optional) - Additional parameters for the refresh request.

Example:

const newTokenResponse = await oauthClient.refreshToken("your_refresh_token");
console.log(newTokenResponse.access_token);

PKCE Utility

generateRandomCodeVerifier()

Generates a secure random code verifier for PKCE.

Example:

import { PKCE } from "@manisharma7575/oauthx";

const verifier = await PKCE.generateRandomCodeVerifier();
console.log(verifier);

Example Workflow

  • Generate an authorization URL using getAuthorizeURI and redirect the user to the OAuth provider.
  • Handle the authentication callback using handleCallback to exchange the authorization code for an access token.
  • Store the access and refresh tokens securely (e.g., local storage or secure storage).
  • Use the access token to make authenticated API requests.
  • Refresh the access token using refreshToken when it expires.

References