本应用支持 Google 和 GitHub OAuth 登录。OAuth 登录是可选的,如果不配置,用户仍可以使用邮箱和密码登录。
- 访问 Google Cloud Console
- 创建或选择一个项目
- 点击 "创建凭据" → "OAuth 客户端 ID"
- 配置 OAuth 同意屏幕(如果尚未配置)
- 选择应用类型:Web 应用
- 添加授权的重定向 URI:
如果是生产环境,替换为你的域名:
http://localhost:3000/api/auth/callback/googlehttps://your-domain.com/api/auth/callback/google
将获得的 Client ID 和 Client Secret 添加到 .env.local 文件:
GOOGLE_CLIENT_ID="your-google-client-id-here"
GOOGLE_CLIENT_SECRET="your-google-client-secret-here"- 访问 GitHub Developer Settings
- 点击 "New OAuth App"
- 填写应用信息:
- Application name: DeepMed Search (或你的应用名)
- Homepage URL:
http://localhost:3000(或你的域名) - Authorization callback URL:
生产环境:
http://localhost:3000/api/auth/callback/githubhttps://your-domain.com/api/auth/callback/github
将获得的 Client ID 和 Client Secret 添加到 .env.local 文件:
GITHUB_CLIENT_ID="your-github-client-id-here"
GITHUB_CLIENT_SECRET="your-github-client-secret-here"-
重启开发服务器:
npm run dev
-
访问登录页面:
http://localhost:3000/login -
检查:
- 如果配置了 Google OAuth,应该看到 "使用 Google 登录" 按钮
- 如果配置了 GitHub OAuth,应该看到 "使用 GitHub 登录" 按钮
- 如果都没配置,只会显示邮箱密码登录表单
- OAuth 登录是可选的,不配置也不影响应用的基本使用
- 如果只配置其中一个 OAuth 提供商,登录页面只会显示该按钮
- 生产环境部署时,记得更新重定向 URI 为实际的域名
- 确保
NEXTAUTH_SECRET已正确配置(用于 JWT 加密)
原因:环境变量未配置或配置不正确
解决方案:
- 检查
.env.local文件中是否有GOOGLE_CLIENT_ID和GOOGLE_CLIENT_SECRET - 确保环境变量值正确(不含多余空格或引号)
- 重启开发服务器
可能原因:
- 重定向 URI 配置不正确
- Client Secret 错误
- OAuth 应用未发布(Google 需要发布应用)
解决方案:
- 检查 Google/GitHub OAuth 应用设置中的重定向 URI 是否与实际匹配
- 重新生成 Client Secret 并更新环境变量
- 对于 Google OAuth,确保应用已发布或添加测试用户
这是正常的提示信息,表示未配置 Google OAuth。如果你不需要 Google 登录,可以忽略此警告。
# 数据库连接
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/deepmed"
# NextAuth 配置(必需)
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-key-here-replace-with-random-string"
# 加密密钥(必需)
ENCRYPTION_KEY="your-encryption-key-32-chars-minimum-replace-this"
# Redis(必需)
REDIS_URL="redis://localhost:6379"
# OAuth 提供商(可选)
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
GITHUB_CLIENT_ID="your-github-client-id"
GITHUB_CLIENT_SECRET="your-github-client-secret"