SaaSHub helps you find the best software and product alternatives Learn more →
Oauth Alternatives
Similar projects and alternatives to oauth
-
ASP.NET Core
ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
supabase
The Postgres development platform. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
node-oauth2-server
Complete, compliant and well tested module for implementing an OAuth2 Server/Provider with express in node.js
-
perry
A native TypeScript compiler written in Rust. Compiles TypeScript directly to executables using SWC and LLVM.
-
NOTE:
The number of mentions on this list indicates mentions on common posts plus user suggested alternatives.
Hence, a higher number means a better oauth alternative or higher similarity.
oauth discussion
oauth reviews and mentions
Posts with mentions or reviews of oauth.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2026-05-29.
-
Perry Compiles TypeScript directly to executables using SWC and LLVM
'curl -s -X POST "https://github.com/login/oauth/access_token" -H "Accept: application/json" -d "client_id=' + GITHUB_CLIENT_ID + '&client_secret=' + GITHUB_CLIENT_SECRET + '&code=' + code + '"'
-
Show HN: Sifter – Does your CV stand out to LLMs?
Sounds intriguing but is GitHub login broken? It leads me to a 404 at
https://github.com/login/oauth/authorize?client_id=[redacted...
-
Building LoopSignal Part 3: Closing the Loop with GitHub Issues and Status Notifications
const state = Buffer.from( JSON.stringify({ projectId, userId: user.id }) ).toString("base64url"); const githubAuthUrl = new URL("https://github.com/login/oauth/authorize"); githubAuthUrl.searchParams.set("client_id", clientId); githubAuthUrl.searchParams.set("redirect_uri", redirectUri); githubAuthUrl.searchParams.set("scope", "repo"); githubAuthUrl.searchParams.set("state", state);
-
OAuth 2.0 Flows Demystified: Authorization Code, PKCE, and Client Credentials
// Step 1: Redirect user to provider app.get('/auth/github', (req, res) => { const state = generateRandomString(16); // CSRF protection req.session.oauthState = state; const params = new URLSearchParams({ client_id: process.env.GITHUB_CLIENT_ID!, redirect_uri: `${process.env.APP_URL}/auth/github/callback`, scope: 'read:user user:email', state, }); res.redirect(`https://github.com/login/oauth/authorize?${params}`); }); // Step 2: Handle callback with code app.get('/auth/github/callback', async (req, res) => { const { code, state } = req.query; // Verify state to prevent CSRF if (state !== req.session.oauthState) { return res.status(400).send('Invalid state'); } // Exchange code for token (server-to-server) const tokenResponse = await fetch('https://github.com/login/oauth/access_token', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify({ client_id: process.env.GITHUB_CLIENT_ID, client_secret: process.env.GITHUB_CLIENT_SECRET, // never exposed to browser code, }), }).then(r => r.json()); const { access_token } = tokenResponse; // Fetch user info const user = await fetch('https://api.github.com/user', { headers: { Authorization: `Bearer ${access_token}` }, }).then(r => r.json()); // Create or find user in your DB const dbUser = await upsertUser({ githubId: user.id, email: user.email, name: user.name }); // Create your own session req.session.userId = dbUser.id; res.redirect('/dashboard'); });
-
Your Pull Requests Are Being Ignored. Fix It with This Simple Bot
Name: GITHUB_PR_BOT Client ID: your GitHub App client ID Client Secret: your GitHub App client secret Scope: leave empty Authorization URL: https://github.com/login/oauth/authorize Token URL: https://github.com/login/oauth/access_token
-
OAuth Explained Like You're 5
const express = require('express'); const axios = require('axios'); const app = express(); // Step 1: Redirect user to GitHub app.get('/login', (req, res) => { const githubAuthUrl = `https://github.com/login/oauth/authorize?client_id=${process.env.GITHUB_CLIENT_ID}&scope=read:user`; res.redirect(githubAuthUrl); }); // Step 3: Handle the callback app.get('/callback', async (req, res) => { const { code } = req.query; // Step 4: Exchange code for token const tokenResponse = await axios.post( 'https://github.com/login/oauth/access_token', { client_id: process.env.GITHUB_CLIENT_ID, client_secret: process.env.GITHUB_CLIENT_SECRET, code, }, { headers: { Accept: 'application/json' } } ); const accessToken = tokenResponse.data.access_token; // Step 5: Use the token const userResponse = await axios.get('https://api.github.com/user', { headers: { Authorization: `Bearer ${accessToken}` }, }); res.json(userResponse.data); }); app.listen(3000);
-
Designing an Authentication System: OAuth and SSO
class SocialAuthProvider { constructor(config) { this.providers = { google: { authUrl: 'https://accounts.google.com/o/oauth2/v2/auth', tokenUrl: 'https://oauth2.googleapis.com/token', userInfoUrl: 'https://www.googleapis.com/oauth2/v2/userinfo', scope: 'openid email profile' }, github: { authUrl: 'https://github.com/login/oauth/authorize', tokenUrl: 'https://github.com/login/oauth/access_token', userInfoUrl: 'https://api.github.com/user', scope: 'user:email' } }; } async authenticateUser(provider, code) { const config = this.providers[provider]; if (!config) throw new Error(`Provider ${provider} not supported`); // Exchange code for token const tokenResponse = await fetch(config.tokenUrl, { method: 'POST', headers: { 'Accept': 'application/json' }, body: new URLSearchParams({ client_id: process.env[`${provider.toUpperCase()}_CLIENT_ID`], client_secret: process.env[`${provider.toUpperCase()}_CLIENT_SECRET`], code: code, grant_type: 'authorization_code' }) }); const tokens = await tokenResponse.json(); // Get user info const userResponse = await fetch(config.userInfoUrl, { headers: { 'Authorization': `Bearer ${tokens.access_token}` } }); return await userResponse.json(); } }
-
Supply Chain Security: A Deep Dive into SBOM and Code Signing
# (Replace `` with the email you used to log in) cosign verify \ --certificate-identity="" \ --certificate-oidc-issuer="https://github.com/login/oauth" \ $IMAGE_NAME # Verification for ttl.sh/09dc8b35-cabd-4bd8-885f-.../my-signed-image:1h -- # The following checks were performed on each of these signatures: # - The cosign claims were validated # - Existence of the claims in the transparency log was verified offline # - The code-signing certificate was verified using trusted certificate authority certificates # [{"critical":{"identity":{"docker-reference":"ttl.sh/09dc8b35-cabd-4bd8-885f-.../my-signed-image:1h"},"image":{"docker-manifest-digest":"sha256:410dabcd6f1d53f1f4e5c1ce9553efa298ca6bcdd086dfc976b8f659d58b46d2"},"type":"https://sigstore.dev/cosign/sign/v1"},"optional":{}}]
-
Show HN: Fanfa – Interactive and animated Mermaid diagrams
it says 404:
https://github.com/login/oauth/authorize?access_type=offline...
- SvelteKit SurrealDB Login with GitHub
-
A note from our sponsor - SaaSHub
www.saashub.com | 11 Jun 2026
Stats
Basic oauth repo stats
57
-
-
-