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)
$ 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);
- GraphQL API Starter Kit — project template, pre-configured with TypeScript, GraphQL.js, React, and Relay.
Please create a PR or send me a message on Discord.
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.