Minimal OAuth 2.0 powered by Deno KV.
Note: this project is in beta. API design and functionality are subject to change.
- Uses oauth2_client for OAuth 2.0 workflows and Deno KV for persistent session storage.
- Automatically handles the authorization code flow with Proof Key for Code Exchange (PKCE), access token refresh, and client redirection.
- Comes with pre-configured OAuth 2.0 clients for popular providers.
- Works locally and in the cloud, including Deno Deploy.
- Based on the
Request
andResponse
interfaces from the Web API.
You can also check out a live demo at https://kv-oauth.deno.dev, which uses Github as the OAuth 2.0 provider. Source code is located in demo.ts.
- Download demo.ts.
- Define your
client
object using one of the pre-configured OAuth 2.0 clients or a custom OAuth 2.0 client. - Run the script with the appropriate environment variables and permission
flags defined. E.g. for GitHub:
GITHUB_CLIENT_ID=xxx GITHUB_CLIENT_SECRET=xxx deno run --unstable --allow-env --allow-net demo.ts
Check out the full documentation and API reference here.
KV_PATH
(optional) - defines the path that Deno KV uses. See the API reference for further details.${PROVIDER}_CLIENT_ID
and${PROVIDER}_CLIENT_SECRET
- required when creating a pre-configured OAuth 2.0 client for a given provider. E.g. for Twitter, the environment variable keys areTWITTER_CLIENT_ID
andTWITTER_CLIENT_SECRET
. See the list below for specifics.
Note: reading environment variables requires the
--allow-env[=<VARIABLE_NAME>...]
permission flag. See the manual for further details.
This module comes with a suite of pre-configured OAuth 2.0 clients for the following providers:
Each function is typed so that their respective platform's requirements are met.
If there's a pre-configured OAuth 2.0 client for a provider you'd like added, please submit a pull request or create a new issue.
If you require custom OAuth 2.0 configuration, you must define your client
using
new OAuth2Client()
from the oauth2_client
module.
E.g.:
import { OAuth2Client } from "https://deno.land/x/oauth2_client/mod.ts";
const client = new OAuth2Client({
clientId: Deno.env.get("CUSTOM_CLIENT_ID")!,
clientSecret: Deno.env.get("CUSTOM_CLIENT_SECRET")!,
authorizationEndpointUri: "https://custom.com/oauth/authorize",
tokenUri: "https://custom.com/oauth/token",
redirectUri: "https://my-site.com",
});
Before submitting a pull request, please run deno task ok
and ensure all
checks pass. This checks formatting, linting, types and runs tests.
Check out these projects powered by Deno KV OAuth 2.0:
- Deno SaaSKit / Deno Hunt - A modern SaaS template built on Fresh.
- KV SketchBook - Dead simple sketchbook app.
Do you have a project powered by Deno KV OAuth 2.0 that you'd like to share? Please submit a pull request adding that project to this list.