Skip to content

OAuth 2.0 clients for Google, Apple, Facebook, GitHub and other identity providers.

License

Notifications You must be signed in to change notification settings

kriasoft/simple-oauth2-clients

Repository files navigation

OAuth 2.0 clients (Google, Facebook, Twitter, etc.)

NPM Version NPM Downloads TypeScript Donate Discord

Pre-configured OAuth 2.0 clients based on simple-oauth2. You can use it as a simpler alternative to Passport.js for implementing login flows via 3rd party login providers such as Google, Facebook, Apple, Twitter, etc.

  • Google OAuth 2.0 client (docs)
  • Facebook OAuth 2.0 client (docs)
  • GitHub OAuth 2.0 client (docs)
  • ... more is coming (create a PR)

Getting Started

$ npm install simple-oauth2-clients

Provide environment variables for the OAuth 2.0 providers that you need, For example:

# Google OAuth 2.0 credentials
# https://console.cloud.google.com/apis/credentials
GOOGLE_CLIENT_ID=xxxxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=xxxxx

# Facebook App
# https://developers.facebook.com/apps/
FACEBOOK_APP_ID=xxxxx
FACEBOOK_APP_SECRET=xxxxx

# GitHub App
# https://github.com/settings/applications
GITHUB_CLIENT_ID=xxxxx
GITHUB_CLIENT_SECRET=xxxxx

...
import express from "express";
import {
  FacebookAuthorizationCode,
  GitHubAuthorizationCode,
} from "simple-oauth2-clients";

const app = express();
const github = new GitHubAuthorizationCode();
const facebook = new FacebookAuthorizationCode();

app.get("/auth/github", function (req, res) {
  const authorizeUrl = github.authorizeURL({
    redirect_uri: "https://example.com/auth/github/return",
  });

  res.redirect(authorizeUrl);
});

app.get("/auth/github/return", async function (req, res, next) {
  try {
    const { token } = await github.getToken({
      code: req.query.code,
      redirect_uri: "https://example.com/auth/github/return",
    });

    // Create a new user, or authenticate an existing one.
    // await authorize(req, tokens);
    // res.redirect("/");
  } catch (err) {
    next(err);
  }
});

/* ... same for Facebook, Google, Twitter, etc. */

app.listen(8080);

Related Projects

How to Contribute

Please create a PR or send me a message on Discord.

License

Copyright © 2021-present Kriasoft. This source code is licensed under the MIT license found in the LICENSE file.


Made with ♥ by Konstantin Tarkus (@koistya, blog) and contributors.