Git Product home page Git Product logo

deno_grant's Introduction

DenoGrant

Minimalistic pre-configured OAuth 2.0 client for Deno. Inspired by Grant.

NOTE: this is alpha software subject to breaking changes at anytime

  • Comes pre-configured for the following Providers:
  • Built in Typescript definitions for Profile API responses
  • Uses deno-oauth2-client internally
    • can be used with any Deno library
    • only implements OAuth 2.0 grants, letting you take care of storing and retrieving sessions, managing state parameters, etc.

Usage

import DenoGrant, {
  OAuth2Client,
  Providers,
} from "https://deno.land/x/[email protected]/mod.ts";

// Create a DenoGrant instance with your app's base uri and any number of strategies:
const denoGrant = new DenoGrant({
  base_uri: "http://localhost:8000",
  strategies: [{
    provider: Providers.discord,
    client_id: "<your client id>",
    client_secret: "<your client secret>",
    redirect_path: "/auth/discord/callback",
    scope: "identify",
  }, {
    provider: Providers.google,
    client_id: "<your client id>",
    client_secret: "<your client secret>",
    redirect_path: "/auth/google/callback",
    scope: "openid profile",
  }],
});

// You can also add strategies after creation:
const githubStrategy: OAuth2Client = denoGrant.addStrategy(Providers.github, {
  client_id: "<your client id>",
  client_secret: "<your client secret>",
  redirect_path: "/auth/github/callback",
  scope: "",
});

// Generate an authorization URI for a registered strategy:
const discordAuthorizationURI = denoGrant.getAuthorizationUri(Providers.discord)
  .toString();
const googleAuthorizationURI = denoGrant.getAuthorizationUri(Providers.google)
  .toString();
const githubAuthorizationURI = denoGrant.getAuthorizationUri(Providers.github)
  .toString();

// Redirect user to authorization URI...

// User gets redirected back to your app,
// Generate access tokens
const tokens = await denoGrant.getToken(
  Providers.github,
  "http://localhost:8000/auth/github/callback?code=abc123&scope=",
);

// Request user profile with obtained access token
const profile = await denoGrant.getProfile(
  Providers.github,
  tokens.accessToken,
);
// Profile is fully typed based on provider type!

deno_grant's People

Contributors

w3cj avatar omar2205 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.