Files
record-app-next/document/OAUTH_SETUP_GUIDE.md

2.4 KiB
Raw Blame History

OAuth 设置指南

问题诊断

如果遇到 Error 400: invalid_request 错误,通常是 OAuth 配置问题。

常见错误原因

  1. NEXTAUTH_URL 格式错误

    • 包含多余的引号
    • URL 格式不正确
    • 协议不匹配http vs https
  2. 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 中:

  1. 访问 Google Cloud Console
  2. 选择你的项目
  3. 进入 "APIs & Services" > "Credentials"
  4. 编辑你的 OAuth 2.0 客户端 ID
  5. 在 "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 包含多余的引号或格式错误

解决

  1. 检查 .env.production 文件
  2. 确保 NEXTAUTH_URL 格式正确
  3. 重启应用

错误redirect_uri 不在授权列表中

原因Google OAuth 重定向 URI 未正确配置

解决

  1. 在 Google Cloud Console 中添加正确的重定向 URI
  2. 确保 URI 格式为:https://your-domain.com/api/auth/callback/google

错误invalid_client

原因Google OAuth 凭据错误

解决

  1. 检查 GOOGLE_CLIENT_ID 和 GOOGLE_CLIENT_SECRET
  2. 确保凭据与 Google Cloud Console 中的配置匹配