跳轉到

Google OAuth 驗證流程(Time Compass)

[!WARNING] ☁️ 完整體驗 (Real Data World) | ⏱️ 預計 10-15 分鐘
此文檔屬於「30+ 分鐘完整設置體驗」的 第二步。此前請確認已完成 Google Cloud Project 設定。若您只希望進行 5 分鐘快速體驗(無任何成本),請回到 README 選擇「Mock 模式快速開始」。

本文檔涵蓋如何驗證 Time Compass 的 Google OAuth 授權流程是否可正常讀寫 Google 資料。

驗證流程概述:本步驟確認授權成功 → 產生 token.json → 測試讀寫能力。

[!NOTE] 快速進入? 若您為評審、或已使用 MCP_DEV_MODE=1,可先以 mock data 驗證流程;正式串接 Google 前仍建議完成本文實測。


簡介:完整驗證流程

本指南分為四個主要步驟,從啟動 OAuth 授權,到驗證讀取、聚合與寫入能力。

最終目的: 確認 token.json 可正確產生,且 Google Calendar / Tasks 的讀寫流程在 Time Compass 中可用。

如果你已經熟悉 MCP 與 OAuth 驗證流程

如果您已熟悉 MCP 與 OAuth,可先依下列精簡步驟驗證: 如果您不熟悉,請直接從下方「準備工作」開始,依序完成完整流程。

TOC - 準備工作 - Step 1:啟動 OAuth 授權流程(擇一) - Step 2:完成瀏覽器授權 - Step 3:驗證讀取與聚合能力 - Step 4:驗證寫入能力(高風險) - 測試方案(建議) - 常見問題(Cloud / CI / Headless) - 完成後檢查清單 - 官方文檔參考

  1. 確認 .env 已設定 GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET
  2. 執行 uv run tools/get_google_token.py,在瀏覽器完成授權
  3. 確認專案根目錄已產生 token.json
  4. 呼叫 list_calendars(或 list_tasklists)與 get_time_context;需要時再測試 create_task / create_calendar_event

四大步驟概覽

這裡先提供流程概覽,幫您快速掌握整體有哪些步驟,以及每一步會帶來的結果。

  1. 啟動 OAuth 授權流程
  2. 目的與效果:使用 MCP 工具或腳本啟動授權,進入 Google 同意畫面。
  3. 完成後您會得到:✅ 授權頁可開啟、流程進入 Google 同意畫面

  4. 完成瀏覽器授權

  5. 目的與效果:在 Google 頁面登入並同意權限,完成 callback 並產生授權資料。
  6. 完成後您會得到:✅ 專案根目錄出現 token.json

  7. 驗證讀取與聚合能力

  8. 目的與效果:測試 list 與 context 工具,確認資料讀取與聚合流程可用。
  9. 完成後您會得到:✅ list_calendars / list_tasklistsget_time_context 正常回傳

  10. 驗證寫入能力(高風險)

  11. 目的與效果:用測試日曆或清單驗證寫入流程,確認新增資料可在 Google 端追蹤。
  12. 完成後您會得到:✅ 寫入成功且資料可追蹤

[!IMPORTANT] 寫入測試請使用「測試用日曆 / 測試用 Task 清單」,避免污染正式資料。


準備工作

[!NOTE] 關於「執行」:本指南中的「執行 [指令]」表示: 1. 複製下方框框內的完整指令 2. 貼到終端機中 3. 按下 Enter 鍵執行

  1. 確認 已完成 Google Cloud 專案設定 您會看到:.env 已包含 GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET

  2. 確認 位於專案根目錄 您會看到:可看到 tools/ 目錄(含 get_google_token.py


Step 1:啟動 OAuth 授權流程(擇一)

Step 1.1:MCP 工具入口

  1. 在 AI 端呼叫 launch_google_token_auth
    您會看到:工具回傳授權流程資訊,並嘗試開啟瀏覽器授權頁

[!NOTE] 要使用 MCP 工具入口,需先完成 MCP 環境建置 或 Mock 模式設置。

Step 1.2:腳本入口(推薦 - 無需 MCP)

  1. 執行 以下指令:
    uv run tools/get_google_token.py
    
    您會看到:終端機顯示授權 URL,並嘗試開啟瀏覽器

Step 2:完成瀏覽器授權

  1. 開啟 Google 授權頁(若未自動開啟,手動貼上工具輸出的 URL) 您會看到:看到 Google 登入/授權頁面

  2. 登入並同意 OAuth 權限 您會看到:授權流程完成,頁面顯示成功導回或完成提示

  3. 確認 專案根目錄出現 token.json 您會看到:token.json 存在,且檔案內容非空


Step 3:驗證讀取與聚合能力

Step 3.1:讀取能力(建議先做)

  1. 先定義呼叫
  2. 呼叫名稱:list_calendarslist_tasklists
  3. 呼叫目的:確認 OAuth token 可用,且具備至少一種 Google 讀取能力
  4. 成功判準:回傳非空資料,且不是 AUTH_REQUIRED

  5. 呼叫 list_calendarslist_tasklists 您會看到:回傳非空資料,且不是 AUTH_REQUIRED

Step 3.2:聚合能力

  1. 先定義呼叫
  2. 呼叫名稱:get_time_context
  3. 呼叫目的:驗證 Time Compass 可聚合 Google Calendar/Tasks 資料進入統一 context
  4. 成功判準:回傳內容含 Google 資料,且非授權錯誤

  5. 呼叫 get_time_context 您會看到:回傳內容含 Google 資料,且非授權錯誤


Step 4:驗證寫入能力(高風險)

  1. Tasks 寫入測試:呼叫 create_task(或 task draft 寫入流程) 您會看到:成功回傳建立結果,Google Tasks 可看到新增項目

  2. Calendar 寫入測試:呼叫 create_calendar_event(或 Planner apply) 您會看到:成功回傳建立結果,Google Calendar 可看到新增事件

[!IMPORTANT] 若寫入失敗,優先檢查 OAuth scope、目標日曆/清單權限、以及目前使用帳號是否與 Test Users 一致。


測試方案(建議)

Smoke Test(最小可行)

  1. 專案根目錄可看到 token.json
  2. list_calendars 成功
  3. get_time_context 成功

Functional Test(功能測試)

  1. Calendar 讀取/寫入各執行一次
  2. Tasks 讀取/寫入各執行一次
  3. Planner Studio(非 dev mode)可載入 context

Regression Test(回歸測試)

  1. 刪除 token.json 後重新授權
  2. 重啟 MCP/IDE 後再次呼叫工具
  3. 驗證 token refresh 後仍可持續使用

常見問題(Cloud / CI / Headless)

  1. Redirect URI 不匹配
  2. 症狀:redirect_uri_mismatch
  3. 原因:Google Console 設定與實際 callback URL 不一致(包含 port/path)

  4. 無法開瀏覽器完成授權

  5. 症狀:流程卡在等待 callback
  6. 原因:雲端或無頭環境缺少互動式瀏覽器

  7. Session / Token 落地策略不相容

  8. 症狀:重啟後授權遺失、或多實例行為不一致
  9. 原因:仍使用本地 session / token.json,未改為持久化儲存

  10. 憑證注入不完整

  11. 症狀:啟動即報 GOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET missing
  12. 原因:執行環境未正確注入環境變數

  13. 多租戶或共享機器安全風險

  14. 症狀:token 管理混亂、權限邊界不清
  15. 原因:共用檔案或 runtime,但未設計隔離機制

完成後檢查清單

  • [ ] token.json 已成功建立
  • [ ] list_calendarslist_tasklists 可正常讀取
  • [ ] get_time_context 可取得 Google 資料
  • [ ] Calendar / Tasks 寫入測試至少各成功一次(使用測試資料)
  • [ ] 未洩露 CLIENT SECRETtoken.json 等敏感資訊

下一步

前往 Gradio Web UI 獨立式,了解如何使用 Web 界面進行完整的時間規劃與任務管理體驗。


官方文檔參考

  • Google OAuth 2.0 for Web Server Applications https://developers.google.com/identity/protocols/oauth2/web-server

  • Google OAuth Consent Screen 設定 https://developers.google.com/workspace/guides/configure-oauth-consent

  • Google Calendar API Auth https://developers.google.com/workspace/calendar/api/auth

  • Google Tasks API Auth https://developers.google.com/tasks/auth