從零理解:為什麼要開 API、建憑證、設同意頁面——每一步的意義
console.cloud.google.comclient_id 和 client_secret。| 方式 | 做法 | 問題 |
|---|---|---|
| ❌ 直接給密碼 | 把 Google 密碼告訴程式 | 程式可以做任何事(刪帳號、改密碼),安全風險極高 |
| ❌ API Key | 生成一個 Key,程式用這個 Key | Google 個人帳號的 Drive 不支援純 API Key,必須有用戶授權 |
| ✅ OAuth 2.0 | 你授權 → Google 給 Token → 程式用 Token | Token 只有特定權限(如只能讀 Drive),你可以隨時撤銷,密碼永遠不會洩漏給程式 |
client_id:公開的應用程式識別碼(外洩影響較小)client_secret:這個絕對不能外洩!別人拿到後可假冒你的應用,騙取用戶授權| 保管方式 | 做法 | 優點 | 缺點 | 適合誰 |
|---|---|---|---|---|
| ❌ 隨意放磁碟 | 直接存在 D:/tmp/ 或桌面 | 方便 | 容易誤上傳 GitHub、被惡意程式掃到 | 不建議任何人 |
| 🟡 本機隱藏文件夾 | 統一放 C:/secrets/,從不碰 Git |
簡單、離線可用 | 電腦壞掉就沒了、無加密 | 個人小項目 |
| 🟡 環境變量 | 把內容存入系統環境變量,程式讀取 | 不是文件、不會被誤提交 | 重裝電腦要重設、明文存在系統裡 | 開發者常用 |
| ✅ GCP Secret Manager | 把 JSON 內容上傳到 Google 雲端保險箱,程式用指令取出 | 加密儲存、有稽核日誌、版本管理、多台電腦共用 | 需要網路、需要 gcloud CLI、有學習成本 | 已用 GCP 的用戶 ✓ |
| ✅ 1Password / Bitwarden | 把 JSON 內容存為「安全筆記」 | 加密、跨裝置同步、有 CLI 可自動取出 | 需要訂閱費用(1Password) | 已有密碼管理器的用戶 |
| 情境 | 風險 | 後果 |
|---|---|---|
| 放在 D:/tmp/ 或桌面 | 🔴 高 | 被惡意程式掃到、誤上傳雲端同步 |
| 放在 Git 項目文件夾裡 | 🔴 極高 | 一旦 push 到 GitHub,全球都能看到 |
| 放在 C:/secrets/(不進 Git) | 🟡 中 | 電腦被入侵可能洩漏,但日常安全 |
| 存在 GCP Secret Manager | 🟢 低 | Google 加密保管,有稽核日誌,可隨時撤銷 |
| 存在 1Password 安全筆記 | 🟢 低 | 加密同步,主密碼保護 |