跳转到主要内容
在 OAuth 2.0 认证下,由用户为自己的 Google Sheets 授权访问权限。适合处理用户各自数据的应用。

适用场景

  • 面向用户的应用 —— 用户访问自己的 Google Sheets
  • 多租户应用 —— 不同用户管理各自不同的电子表格
  • 个人数据访问 —— 读写用户个人账号中的表格
  • 桌面 / Web 应用 —— 存在用户交互的场景

前置条件

  • Google Cloud Console 项目
  • 已启用 Google Sheets API 与 Google Drive API
  • Laravel Socialite(推荐)

搭建步骤

1

配置 Google Cloud Console

  1. 访问 Google Cloud Console
  2. 选择项目或新建项目
  3. 进入 APIs & Services > Library
  4. 启用以下 API:
    • Google Sheets API
    • Google Drive API
2

创建 OAuth 2.0 凭据

  1. 进入 APIs & Services > Credentials
  2. 点击 Create Credentials > OAuth client ID
  3. 配置 OAuth 同意屏幕(仅首次):
    • 用户类型选择 External
    • 填写必填项(应用名、支持邮箱、开发者联系方式)
    • 添加 scope:https://www.googleapis.com/auth/spreadsheetshttps://www.googleapis.com/auth/drive
  4. 应用类型选择 Web application
  5. 添加授权重定向 URI:
    • 开发环境: http://localhost:8000/auth/google/callback
    • 生产环境: https://yourdomain.com/auth/google/callback
  6. 点击 Create
  7. 复制 Client IDClient Secret
3

配置 Laravel 环境

.env 中添加:
更新 config/google.php
4

安装 Laravel Socialite

config/services.php 中添加:
5

实现认证控制器

6

添加路由

7

更新 User 模型

迁移:
User 模型:
8

使用 Sheets

Token 刷新

包会自动处理 token 过期:

中间件

强制要求 Google 认证的中间件:

安全

1. Token 存储

  • 将 token 安全地保存在数据库中
  • 使用 Laravel 内建加密
  • 不要在客户端暴露 token

2. Scope 管理

  • 只申请最少必要的 scope
  • 遵循最小权限原则
  • 向用户清楚说明所需权限的用途

3. 错误处理

  • 妥善处理过期 token
  • 提供友好的重新认证流程
  • 记录并监控错误

常见问题

常见错误

“redirect_uri_mismatch” 错误
  • 请确认 Google Console 中的重定向 URI 与应用完全一致
  • 检查 http 与 https 的差异
  • 检查末尾是否有斜杠
“invalid_grant” 或 “unauthorized” 错误
  • token 过期且刷新失败
  • 引导用户重新认证
  • 确认 refresh token 是否存在
“access_denied” 错误
  • 用户拒绝了权限授予
  • 用合适的提示进行处理
  • 提供重新尝试授权的选项

测试路由

最后修改于 2026年7月18日