Skip to content

Latest commit

 

History

History
133 lines (99 loc) · 4.27 KB

README.md

File metadata and controls

133 lines (99 loc) · 4.27 KB

GitHub Auth Library

The github-auth-library is a Node.js library designed to handle OAuth authentication with GitHub. It provides a simple interface to authenticate users, retrieve access tokens, and fetch user details using GitHub's API. This library is designed to follow the SOLID principles, making it extensible and maintainable.

Features

  • Easy-to-use methods for GitHub OAuth authentication.
  • Methods to exchange authorization code for access token.
  • Methods to fetch user details using the access token.
  • Structured to follow SOLID principles for better maintainability and extensibility.
  • Ready for integration into your Node.js application.

Installation

npm install github-auth-library

Usage

Initialize the GitHub SDK

To use the library, you need to initialize the GitHubSDK with your GitHub OAuth application's client ID and client secret.

const GitHubSDK = require("github-auth-library");

const githubSDK = new GitHubSDK(
  "YOUR_GITHUB_CLIENT_ID",
  "YOUR_GITHUB_CLIENT_SECRET"
);

Exchange Authorization Code for Access Token

You can exchange the authorization code received from GitHub for an access token using the getToken method.

const code = "AUTHORIZATION_CODE_RECEIVED_FROM_GITHUB";
const redirectUri = "YOUR_REDIRECT_URI";

githubSDK
  .getToken(code, redirectUri)
  .then((token) => {
    console.log("Access Token:", token);
  })
  .catch((error) => {
    console.error("Error getting access token:", error);
  });

Fetch User Details

Once you have the access token, you can fetch the user details using the getUserInfo method.

const token = {
  access_token: "YOUR_ACCESS_TOKEN",
};

githubSDK
  .getUserInfo(token)
  .then((userInfo) => {
    console.log("User Info:", userInfo);
  })
  .catch((error) => {
    console.error("Error getting user info:", error);
  });

Methods

getToken(code, redirectUri)

  • Description: Exchanges the authorization code for an access token.
  • Parameters:
    • code (string): The authorization code received from GitHub.
    • redirectUri (string): The redirect URI registered with your GitHub OAuth application.
  • Returns: A promise that resolves to the access token.
  • Reference: GitHub OAuth Documentation

getUserInfo(token)

  • Description: Fetches user details using the access token.
  • Parameters:
    • token (object): An object containing the access token (access_token).
  • Returns: A promise that resolves to the user details.
  • Reference: GitHub Users API Documentation

Example

Here is an example of using the github-auth-library in an Express.js application to handle GitHub OAuth authentication.

const express = require("express");
const GitHubSDK = require("github-auth-library");
const app = express();

const githubSDK = new GitHubSDK(
  "YOUR_GITHUB_CLIENT_ID",
  "YOUR_GITHUB_CLIENT_SECRET"
);

app.post("/github-auth", async (req, res) => {
  const { code, redirectUri } = req.body;

  try {
    const token = await githubSDK.getToken(code, redirectUri);
    const userInfo = await githubSDK.getUserInfo(token);
    res.status(200).json({ user: userInfo, token });
  } catch (error) {
    res.status(401).json({ message: "Unauthorized", error });
  }
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Resources