[PR #8814] feat: allow OAuth endpoint overrides for social providers #25131

Open
opened 2026-04-15 22:44:05 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/better-auth/better-auth/pull/8814
Author: @GautamBytes
Created: 3/28/2026
Status: 🔄 Open

Base: main ← Head: feat/provider-emulator-support


📝 Commits (4)

  • 607a644 feat: support social provider endpoint overrides
  • 73fdd7e fix: honor remaining provider endpoint overrides
  • 8df8527 fix: handle remaining provider override regressions
  • 6f38707 docs: add oauth endpoint override docs

📊 Changes

41 files changed (+988 additions, -182 deletions)

View changed files

📝 docs/content/docs/concepts/oauth.mdx (+29 -0)
📝 docs/content/docs/reference/options.mdx (+4 -1)
📝 packages/better-auth/src/social.test.ts (+654 -0)
📝 packages/core/src/oauth2/oauth-provider.ts (+18 -0)
📝 packages/core/src/oauth2/refresh-access-token.ts (+1 -1)
📝 packages/core/src/oauth2/validate-authorization-code.ts (+12 -6)
📝 packages/core/src/social-providers/apple.ts (+5 -5)
📝 packages/core/src/social-providers/atlassian.ts (+2 -2)
📝 packages/core/src/social-providers/cognito.ts (+7 -4)
📝 packages/core/src/social-providers/discord.ts (+15 -16)
📝 packages/core/src/social-providers/dropbox.ts (+2 -2)
📝 packages/core/src/social-providers/facebook.ts (+11 -3)
📝 packages/core/src/social-providers/figma.ts (+2 -2)
📝 packages/core/src/social-providers/github.ts (+38 -16)
📝 packages/core/src/social-providers/gitlab.ts (+3 -3)
📝 packages/core/src/social-providers/google.ts (+10 -5)
📝 packages/core/src/social-providers/huggingface.ts (+3 -3)
📝 packages/core/src/social-providers/kakao.ts (+2 -2)
📝 packages/core/src/social-providers/kick.ts (+4 -2)
📝 packages/core/src/social-providers/line.ts (+4 -3)

...and 21 more files

📄 Description

Summary

This adds optional OAuth endpoint overrides for social providers so local emulators, sandbox environments, and custom OAuth servers can be used without changing provider defaults.

Closes

#8811

What changed

  • added optional provider config fields:
    • authorizationEndpoint
    • tokenEndpoint
    • userInfoEndpoint
    • jwksEndpoint
  • updated shared OAuth helpers to respect overridden token endpoints
  • updated social providers to prefer explicit endpoint overrides over derived/default URLs
  • preserved existing behavior when overrides are not provided
  • added coverage for:
    • Google auth/token/JWKS override flow
    • Railway token + userinfo override flow
    • GitLab explicit override precedence over issuer-derived endpoints
  • documented the new options in the reference docs

Why

Several social providers had hardcoded authorization, token, userinfo, or JWKS URLs, which made local OAuth emulator support difficult or impossible. This change enables emulator-based development and testing while keeping production defaults unchanged.


Summary by cubic

Add optional OAuth endpoint overrides for social providers to support local emulators, sandboxes, and custom OAuth servers. Overrides apply to authorization, token, refresh, user info, and JWKS calls; defaults remain when not set.

  • New Features
    • Most providers honor authorizationEndpoint, tokenEndpoint, userInfoEndpoint, and jwksEndpoint; WeChat adds refreshTokenEndpoint.
    • Core auth-code and refresh flows use options.tokenEndpoint; JWKS fetches use options.jwksEndpoint (Apple, Google, Cognito, Microsoft, Facebook).
    • Authorization URLs keep existing query params while adding required ones (Discord, TikTok, Roblox, Slack, Zoom, VK). GitLab prefers explicit overrides over issuer-derived URLs.
    • Provider tweaks: GitHub derives the email endpoint from a custom userInfoEndpoint; PayPal preserves query params on user info calls; more providers accept userInfoEndpoint overrides; Reddit honors tokenEndpoint. Tests expanded; docs include examples and option references.

Written for commit 6f387077e4590799d35bbabdc096bbf14e4b5795. Summary will update on new commits.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/better-auth/better-auth/pull/8814 **Author:** [@GautamBytes](https://github.com/GautamBytes) **Created:** 3/28/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `feat/provider-emulator-support` --- ### 📝 Commits (4) - [`607a644`](https://github.com/better-auth/better-auth/commit/607a644c47f5696b7addedf58530fc933c9eca09) feat: support social provider endpoint overrides - [`73fdd7e`](https://github.com/better-auth/better-auth/commit/73fdd7e628a32196e50ee4840d949730b4bc4d58) fix: honor remaining provider endpoint overrides - [`8df8527`](https://github.com/better-auth/better-auth/commit/8df85272ca6b3bf584f0ffb0606ed73926b0ceb6) fix: handle remaining provider override regressions - [`6f38707`](https://github.com/better-auth/better-auth/commit/6f387077e4590799d35bbabdc096bbf14e4b5795) docs: add oauth endpoint override docs ### 📊 Changes **41 files changed** (+988 additions, -182 deletions) <details> <summary>View changed files</summary> 📝 `docs/content/docs/concepts/oauth.mdx` (+29 -0) 📝 `docs/content/docs/reference/options.mdx` (+4 -1) 📝 `packages/better-auth/src/social.test.ts` (+654 -0) 📝 `packages/core/src/oauth2/oauth-provider.ts` (+18 -0) 📝 `packages/core/src/oauth2/refresh-access-token.ts` (+1 -1) 📝 `packages/core/src/oauth2/validate-authorization-code.ts` (+12 -6) 📝 `packages/core/src/social-providers/apple.ts` (+5 -5) 📝 `packages/core/src/social-providers/atlassian.ts` (+2 -2) 📝 `packages/core/src/social-providers/cognito.ts` (+7 -4) 📝 `packages/core/src/social-providers/discord.ts` (+15 -16) 📝 `packages/core/src/social-providers/dropbox.ts` (+2 -2) 📝 `packages/core/src/social-providers/facebook.ts` (+11 -3) 📝 `packages/core/src/social-providers/figma.ts` (+2 -2) 📝 `packages/core/src/social-providers/github.ts` (+38 -16) 📝 `packages/core/src/social-providers/gitlab.ts` (+3 -3) 📝 `packages/core/src/social-providers/google.ts` (+10 -5) 📝 `packages/core/src/social-providers/huggingface.ts` (+3 -3) 📝 `packages/core/src/social-providers/kakao.ts` (+2 -2) 📝 `packages/core/src/social-providers/kick.ts` (+4 -2) 📝 `packages/core/src/social-providers/line.ts` (+4 -3) _...and 21 more files_ </details> ### 📄 Description ## Summary This adds optional OAuth endpoint overrides for social providers so local emulators, sandbox environments, and custom OAuth servers can be used without changing provider defaults. ## Closes #8811 ### What changed - added optional provider config fields: - `authorizationEndpoint` - `tokenEndpoint` - `userInfoEndpoint` - `jwksEndpoint` - updated shared OAuth helpers to respect overridden token endpoints - updated social providers to prefer explicit endpoint overrides over derived/default URLs - preserved existing behavior when overrides are not provided - added coverage for: - Google auth/token/JWKS override flow - Railway token + userinfo override flow - GitLab explicit override precedence over issuer-derived endpoints - documented the new options in the reference docs ## Why Several social providers had hardcoded authorization, token, userinfo, or JWKS URLs, which made local OAuth emulator support difficult or impossible. This change enables emulator-based development and testing while keeping production defaults unchanged. <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Add optional OAuth endpoint overrides for social providers to support local emulators, sandboxes, and custom OAuth servers. Overrides apply to authorization, token, refresh, user info, and JWKS calls; defaults remain when not set. - **New Features** - Most providers honor `authorizationEndpoint`, `tokenEndpoint`, `userInfoEndpoint`, and `jwksEndpoint`; WeChat adds `refreshTokenEndpoint`. - Core auth-code and refresh flows use `options.tokenEndpoint`; JWKS fetches use `options.jwksEndpoint` (Apple, Google, Cognito, Microsoft, Facebook). - Authorization URLs keep existing query params while adding required ones (Discord, TikTok, Roblox, Slack, Zoom, VK). GitLab prefers explicit overrides over issuer-derived URLs. - Provider tweaks: GitHub derives the email endpoint from a custom `userInfoEndpoint`; PayPal preserves query params on user info calls; more providers accept `userInfoEndpoint` overrides; Reddit honors `tokenEndpoint`. Tests expanded; docs include examples and option references. <sup>Written for commit 6f387077e4590799d35bbabdc096bbf14e4b5795. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-15 22:44:05 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#25131