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