Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

simple-oauth2-clients

kriasoft6MIT0.2.3TypeScript support: included

OAuth 2.0 client configurations (Google, Facebook, GitHub, etc.)

apple, auth, authentication, client, credentials, facebook, github, google, http, oauth 2.0, oauth 2, oauth, oauth2, oauth20, token

readme

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);

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.