OAuth guides
Use dummyoauth with Better Auth
Point Better Auth at a dummyoauth mock issuer for local OAuth and OIDC development. Dashboard Integration env vars, redirect URI, and production swap steps.
Better Auth expects an OAuth/OIDC issuer, client credentials, and a registered redirect URI. dummyoauth is a mock IdP for development and test. Use the genericOAuth plugin with discoveryUrl set to your issuer plus /.well-known/openid-configuration.
Dashboard setup
- Sign in and create a project in the dashboard.
- Add the generic OIDC provider preset.
- Register redirect URI
http://localhost:3006/callbackon your OAuth client. - Add dummy users for consent screens.
- Copy env vars from the Integration panel.
Environment and config
Replace placeholders with values from Integration:
BETTER_AUTH_SECRET=replace-with-random-string
BETTER_AUTH_URL=http://localhost:3006
OAUTH_ISSUER=https://dummyoauth.com/p/your-project
OAUTH_CLIENT_ID=<client-id>
OAUTH_CLIENT_SECRET=<client-secret>Run the example repo
Clone dummyOAuth/example/better-auth (port 3006). In the main dummyoauth monorepo you can also run:
pnpm dev:example:better-authProduction swap
Update issuer and client credentials to your production IdP. Keep variable names stable. Do not use dummyoauth for real user authentication.
Related guides
Local OAuth development: localhost callbacks and mock issuers
Run your app on localhost while OAuth discovery, consent, and tokens come from a mock issuer. Loopback redirect URIs, stable env vars, and common pitfalls.
Mock OAuth and OIDC for development and tests
Use a mock IdP for dev and CI: your app keeps localhost callbacks while discovery, consent, and tokens come from an issuer like dummyÔauth.
Understanding the OAuth 2.0 authorization code flow
How browsers, your app, and an authorization server cooperate to let a user sign in without handing your app their password.