Skip to content

[FEAT] 添加 Google OAuth 支持 #143

Description

@ukeSJTU

功能描述

为项目添加 Google OAuth 社交登录支持,允许用户使用 Google 账号进行注册和登录。

问题陈述

目前项目仅支持 GitHub OAuth 作为社交登录方式。然而,OTA 平台的用户画像和 GitHub 用户重合度不高,大部分普通用户更倾向于使用 Google 账号登录。添加 Google OAuth 支持可以:

  • 提升用户注册和登录的便利性
  • 覆盖更广泛的用户群体
  • 提供更符合 OTA 平台用户习惯的登录方式
  • 与 GitHub OAuth 形成互补,满足不同用户的需求

建议的解决方案

在 better-auth 配置中添加 Google 作为社交登录提供商。

技术实现步骤

  1. 在 Google Cloud Console 创建 OAuth 应用

    • 访问 Google Cloud Console
    • 创建新项目或选择现有项目
    • 启用 Google+ API
    • 创建 OAuth 2.0 客户端 ID
    • 配置授权重定向 URI:https://yourdomain.com/api/auth/callback/google
    • 获取 Client ID 和 Client Secret
  2. 配置环境变量

    .env 文件中添加:

    GOOGLE_CLIENT_ID=your-google-client-id
    GOOGLE_CLIENT_SECRET=your-google-client-secret
  3. 更新 better-auth 配置

    src/lib/auth.ts 中添加 Google 提供商:

    export const auth = betterAuth({
      // ... 其他配置
      socialProviders: {
        github: {
          clientId: process.env.GITHUB_CLIENT_ID as string,
          clientSecret: process.env.GITHUB_CLIENT_SECRET as string,
        },
        google: {  // 新增
          clientId: process.env.GOOGLE_CLIENT_ID as string,
          clientSecret: process.env.GOOGLE_CLIENT_SECRET as string,
        },
      },
    });
  4. 更新登录页面 UI

    在登录/注册页面添加 Google 登录按钮,调用:

    await authClient.signIn.social({
      provider: "google",
      callbackURL: "/",
    });
  5. 更新 .env.example

    添加 Google OAuth 相关的环境变量说明。

用户故事

作为一个普通用户,我希望能够使用我的 Google 账号快速注册和登录系统,而不需要记住额外的用户名和密码,这样我可以更方便地使用平台服务。

UI/UX 考虑

  • 在登录/注册页面添加 Google 登录按钮
  • 使用 Google 官方的品牌指南设计按钮样式
  • 按钮应显示 Google logo 和「使用 Google 登录」文字
  • 与现有的 GitHub 登录按钮保持一致的设计风格
  • 在账号绑定页面(issue [FEAT] 添加 "个人中心 > 绑定和关联" 页面 #130)中显示 Google 绑定状态

技术考虑

  • 实现复杂度: 低
  • 潜在的破坏性变更: 否
  • 需要的依赖:
    • better-auth (已有)
    • Google Cloud Console OAuth 应用配置

验收标准

  • Google OAuth 应用已在 Google Cloud Console 中创建并配置
  • 环境变量 GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET 已配置
  • better-auth 配置中已添加 Google 社交提供商
  • 登录页面显示 Google 登录按钮
  • 注册页面显示 Google 注册按钮
  • 用户可以使用 Google 账号成功注册新账号
  • 用户可以使用 Google 账号成功登录已有账号
  • 账号绑定页面([FEAT] 添加 "个人中心 > 绑定和关联" 页面 #130)可以显示 Google 绑定状态
  • 用户可以在账号绑定页面绑定/解绑 Google 账号
  • .env.example 文件已更新,包含 Google OAuth 配置说明

相关问题

参考文档

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions