适用场景
- 面向用户的应用 —— 用户访问自己的 Google Sheets
- 多租户应用 —— 不同用户管理各自不同的电子表格
- 个人数据访问 —— 读写用户个人账号中的表格
- 桌面 / Web 应用 —— 存在用户交互的场景
前置条件
- Google Cloud Console 项目
- 已启用 Google Sheets API 与 Google Drive API
- Laravel Socialite(推荐)
搭建步骤
配置 Google Cloud Console
- 访问 Google Cloud Console
- 选择项目或新建项目
- 进入 APIs & Services > Library
- 启用以下 API:
- Google Sheets API
- Google Drive API
创建 OAuth 2.0 凭据
- 进入 APIs & Services > Credentials
- 点击 Create Credentials > OAuth client ID
- 配置 OAuth 同意屏幕(仅首次):
- 用户类型选择 External
- 填写必填项(应用名、支持邮箱、开发者联系方式)
- 添加 scope:
https://www.googleapis.com/auth/spreadsheets与https://www.googleapis.com/auth/drive
- 应用类型选择 Web application
- 添加授权重定向 URI:
- 开发环境:
http://localhost:8000/auth/google/callback - 生产环境:
https://yourdomain.com/auth/google/callback
- 开发环境:
- 点击 Create
- 复制 Client ID 与 Client Secret
Token 刷新
包会自动处理 token 过期:中间件
强制要求 Google 认证的中间件:安全
1. Token 存储
- 将 token 安全地保存在数据库中
- 使用 Laravel 内建加密
- 不要在客户端暴露 token
2. Scope 管理
- 只申请最少必要的 scope
- 遵循最小权限原则
- 向用户清楚说明所需权限的用途
3. 错误处理
- 妥善处理过期 token
- 提供友好的重新认证流程
- 记录并监控错误
常见问题
常见错误
“redirect_uri_mismatch” 错误- 请确认 Google Console 中的重定向 URI 与应用完全一致
- 检查 http 与 https 的差异
- 检查末尾是否有斜杠
- token 过期且刷新失败
- 引导用户重新认证
- 确认 refresh token 是否存在
- 用户拒绝了权限授予
- 用合适的提示进行处理
- 提供重新尝试授权的选项