crush-level-web/docs/GoogleOAuth-QuickStart.md

143 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Google OAuth 快速开始指南
## 5 分钟快速集成
### 步骤 1: 获取 Google OAuth 凭据
1. 访问 [Google Cloud Console](https://console.cloud.google.com/)
2. 创建新项目或选择现有项目
3. 在左侧菜单选择 "API 和服务" > "凭据"
4. 点击 "创建凭据" > "OAuth 客户端 ID"
5. 选择应用类型为 "Web 应用"
6. 配置授权重定向 URI
```
http://localhost:3000/api/auth/google/callback
```
7. 点击"创建"并复制客户端 ID
### 步骤 2: 配置环境变量
在项目根目录创建 `.env.local` 文件:
```bash
NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXT_PUBLIC_GOOGLE_CLIENT_ID=你的客户端ID
```
### 步骤 3: 重启开发服务器
```bash
npm run dev
```
### 步骤 4: 测试登录
1. 访问 http://localhost:3000/login
2. 点击 "Continue with Google" 按钮
3. 选择 Google 账号并授权
4. 应该会重定向回应用并完成登录
## 文件清单
已创建的文件:
-`src/lib/oauth/google.ts` - Google OAuth 配置
-`src/app/(auth)/login/components/GoogleButton.tsx` - Google 登录按钮组件
-`src/app/api/auth/google/callback/route.ts` - OAuth 回调路由
-`src/app/(auth)/login/components/login-form.tsx` - 已更新使用 GoogleButton
## 工作流程
```
用户点击按钮
GoogleButton.handleGoogleLogin()
跳转到 Google 授权页面
用户授权
Google 重定向到 /api/auth/google/callback
API 路由提取 code 并重定向到 /login?google_code=xxx
GoogleButton.useEffect() 检测到 google_code
调用后端登录接口 (thirdType: Google)
登录成功,跳转到首页
```
## 后端接口要求
后端需要处理以下登录请求:
```typescript
POST /api/auth/login
{
"appClient": "WEB",
"deviceCode": "设备ID",
"thirdToken": "Google授权码",
"thirdType": "GOOGLE"
}
```
后端需要:
1. 使用授权码向 Google 交换 access_token
2. 使用 access_token 获取用户信息
3. 创建或更新用户
4. 返回应用的登录 token
## 常见问题
### Q: 点击按钮后没有跳转?
A: 检查浏览器控制台是否有错误,确认环境变量已正确配置。
### Q: 回调后显示错误?
A: 检查 Google Cloud Console 中的回调 URL 配置是否正确。
### Q: 登录接口调用失败?
A: 确认后端接口已实现并支持 Google 登录。
## 生产环境部署
### 1. 更新 Google OAuth 配置
在 Google Cloud Console 添加生产环境回调 URL
```
https://your-domain.com/api/auth/google/callback
```
### 2. 更新环境变量
```bash
NEXT_PUBLIC_APP_URL=https://your-domain.com
NEXT_PUBLIC_GOOGLE_CLIENT_ID=生产环境客户端ID
```
### 3. 部署
确保在部署平台Vercel/Netlify配置了正确的环境变量。
## 下一步
- [ ] 测试完整的登录流程
- [ ] 添加错误处理和用户反馈
- [ ] 实现登出功能
- [ ] 添加用户信息展示
- [ ] 考虑添加 Apple 登录
## 技术支持
如有问题,请参考:
- [完整文档](./GoogleOAuth.md)
- [环境变量配置](./EnvironmentVariables.md)
- [Google OAuth 官方文档](https://developers.google.com/identity/protocols/oauth2)