Skip to main content
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

實作驗證 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 差異
  • 確認結尾斜線
「invalid_grant」或「unauthorized」錯誤
  • token 過期且 refresh 失敗
  • 要求使用者重新驗證
  • 確認 refresh token 是否存在
「access_denied」錯誤
  • 使用者拒絕授權
  • 以適當訊息因應
  • 提供重試驗證的選項

測試路由

最後修改於 2026年8月2日