2.4 KiB
2.4 KiB
OAuth 设置指南
问题诊断
如果遇到 Error 400: invalid_request 错误,通常是 OAuth 配置问题。
常见错误原因
-
NEXTAUTH_URL 格式错误
- 包含多余的引号
- URL 格式不正确
- 协议不匹配(http vs https)
-
Google OAuth 重定向 URI 配置错误
- 重定向 URI 未在 Google Cloud Console 中正确配置
- 重定向 URI 格式不正确
解决步骤
1. 检查环境变量
在服务器上运行环境变量检查脚本:
node scripts/check-env.js
2. 修复 NEXTAUTH_URL
确保 .env.production 文件中的 NEXTAUTH_URL 格式正确:
# 正确的格式
NEXTAUTH_URL="https://recorder.zyj.best"
# 错误的格式(包含多余引号)
NEXTAUTH_URL=""https://recorder.zyj.best""
3. 配置 Google OAuth
在 Google Cloud Console 中:
- 访问 Google Cloud Console
- 选择你的项目
- 进入 "APIs & Services" > "Credentials"
- 编辑你的 OAuth 2.0 客户端 ID
- 在 "Authorized redirect URIs" 中添加:
https://recorder.zyj.best/api/auth/callback/google
4. 验证配置
重新部署应用并测试:
./deploy.sh
5. 调试信息
如果问题仍然存在,检查应用日志:
docker logs recorder-app
环境变量模板
# Database
DATABASE_URL="file:./prod.db"
# NextAuth.js
NEXTAUTH_URL="https://recorder.zyj.best"
NEXTAUTH_SECRET="your-secure-secret-here"
# Google OAuth
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
# AWS S3 Configuration
AWS_ACCESS_KEY_ID="your-aws-access-key-id"
AWS_SECRET_ACCESS_KEY="your-aws-secret-access-key"
AWS_REGION="us-east-1"
AWS_S3_BUCKET="your-s3-bucket-name"
故障排除
错误:redirect_uri 格式错误
原因:NEXTAUTH_URL 包含多余的引号或格式错误
解决:
- 检查
.env.production文件 - 确保 NEXTAUTH_URL 格式正确
- 重启应用
错误:redirect_uri 不在授权列表中
原因:Google OAuth 重定向 URI 未正确配置
解决:
- 在 Google Cloud Console 中添加正确的重定向 URI
- 确保 URI 格式为:
https://your-domain.com/api/auth/callback/google
错误:invalid_client
原因:Google OAuth 凭据错误
解决:
- 检查 GOOGLE_CLIENT_ID 和 GOOGLE_CLIENT_SECRET
- 确保凭据与 Google Cloud Console 中的配置匹配