適用場景
- 以使用者為中心的應用 — 使用者存取自己的 Google Sheets
- 多租戶應用 — 不同使用者管理不同試算表
- 個人資料存取 — 讀寫使用者個別帳戶的工作表
- 桌面/Web 應用 — 具備使用者互動的應用
前置條件
- Google Cloud Console 專案
- 啟用 Google Sheets API 與 Google Drive API
- Laravel Socialite(建議)
設定
1
設定 Google Cloud Console
- 前往 Google Cloud Console
- 選擇專案或新建
- 前往 APIs & Services > Library
- 啟用下列 API:
- Google Sheets API
- Google Drive API
2
建立 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
3
設定 Laravel 環境
在 更新
.env 檔案加入:config/google.php:4
安裝 Laravel Socialite
config/services.php 加入:5
實作驗證 Controller
6
新增路由
7
更新 User 模型
Migration:User 模型:
8
使用 Sheets
Token 更新
套件會自動處理 token 過期:Middleware
要求 Google 驗證的 middleware:安全性
1. Token 儲存
- 將 token 安全地儲存於資料庫
- 使用 Laravel 內建加密
- 不要將 token 公開至客戶端
2. Scope 管理
- 僅要求必要的最小 scope
- 套用最小權限原則
- 向使用者清楚說明所需權限
3. 錯誤處理
- 適當處理過期 token
- 提供使用者友善的重新驗證流程
- 記錄與監控錯誤
疑難排解
常見錯誤
「redirect_uri_mismatch」錯誤- 確認 Google Console 的 redirect URI 與應用程式完全相符
- 確認 http vs https 差異
- 確認結尾斜線
- token 過期且 refresh 失敗
- 要求使用者重新驗證
- 確認 refresh token 是否存在
- 使用者拒絕授權
- 以適當訊息因應
- 提供重試驗證的選項