Better Auth
Introduction
CLI
https://www.better-auth.com/docs/adapters/drizzle https://orm.drizzle.team/docs/get-started/supabase-new
npx @better-auth/cli generate
npx drizzle-kit generate
npx drizzle-kit push
环境变量
基本配置
NEXT_PUBLIC_BETTER_AUTH_URL
- Better Auth 服务器的 URL。BETTER_AUTH_SECRET
- 用于 Better Auth 服务器的密钥。
社交登录
BETTER_AUTH_GOOGLE_CLIENT_ID
- Google OAuth 应用的 Client ID。BETTER_AUTH_GOOGLE_CLIENT_SECRET
- Google OAuth 应用的 Client Secret。BETTER_AUTH_MICROSOFT_CLIENT_ID
- Microsoft OAuth 应用的 Client ID。BETTER_AUTH_MICROSOFT_CLIENT_SECRET
- Microsoft OAuth 应用的 Client Secret。BETTER_AUTH_DISCORD_CLIENT_ID
- Discord OAuth 应用的 Client ID。BETTER_AUTH_DISCORD_CLIENT_SECRET
- Discord OAuth 应用的 Client Secret。BETTER_AUTH_GITHUB_CLIENT_ID
- GitHub OAuth 应用的 Client ID。BETTER_AUTH_GITHUB_CLIENT_SECRET
- GitHub OAuth 应用的 Client Secret。
OAuth 应用配置
1. GitHub OAuth App
- 访问 GitHub Developer Settings
- 点击 "New OAuth App"
- 填写应用信息:
- Application name: 您的应用名称
- Homepage URL:
http://localhost:3000
(开发环境) - Authorization callback URL:
http://localhost:3000/api/auth/callback/github
- 创建后获取 Client ID 和 Client Secret
2. Google OAuth 2.0
- 访问 Google Cloud Console
- 创建或选择项目
- 启用 Google+ API
- 创建 OAuth 2.0 客户端 ID:
- 应用类型: Web 应用
- 授权重定向 URI:
http://localhost:3000/api/auth/callback/google
- 获取客户端 ID 和客户端密钥
3. Microsoft Azure AD
- 访问 Azure Portal
- 进入 "Azure Active Directory" > "App registrations"
- 点击 "New registration"
- 填写应用信息:
- Name: 您的应用名称
- Redirect URI:
http://localhost:3000/api/auth/callback/microsoft
- 在 "Certificates & secrets" 中创建新的客户端密钥
- 获取 Application (client) ID 和客户端密钥
4. Facebook App
- 访问 Facebook Developers
- 创建新应用
- 添加 "Facebook Login" 产品
- 在 Facebook Login 设置中:
- Valid OAuth Redirect URIs:
http://localhost:3000/api/auth/callback/facebook
- Valid OAuth Redirect URIs:
- 在应用设置中获取 App ID 和 App Secret
5. Discord Application
- 访问 Discord Developer Portal
- 点击 "New Application"
- 填写应用名称
- 在 "OAuth2" 设置中:
- Redirects:
http://localhost:3000/api/auth/callback/discord
- Scopes: 选择
identify
和email
- Redirects:
- 获取 Client ID 和 Client Secret