階段 5 · 帳號、權限與收錢

API Key

用來識別與授權呼叫第三方服務的密鑰。

先用一句話理解

用來識別與授權呼叫第三方服務的密鑰。

打個比方

像外部服務的門禁卡,拿到的人就可能能使用你的額度。

什麼時候會遇到

串 AI、付款、Email、地圖、資料庫或任何第三方 API 時。

再往深一點看

API Key 是一串由服務方產生的隨機字串,每次呼叫 API 時附在 HTTP header(通常是 Authorization: Bearer ...)裡,讓對方知道這個請求來自哪個帳號、能使用哪些功能和多少額度。它和 OAuth 的差別在於:OAuth 代表使用者授權,API Key 代表的是你的應用程式或服務帳號本身。大多數服務會支援建立多把 key,並可設定不同的權限範圍(scope)——例如 Stripe 分 test key 和 live key,OpenAI 可以建立只有讀取權限的 key。API Key 本質上等同密碼,洩漏就等同對方有你的完整存取權,必須放進環境變數而不是寫死在程式碼裡。

舉個例子

你串 Resend 寄交易型 Email:在 Resend 後台產生 API Key,複製後存進 Vercel 的 Environment Variables(絕對不是直接貼進程式碼),後端呼叫 Resend SDK 時自動讀取 `process.env.RESEND_API_KEY`。如果 key 洩漏,任何人都能用你的 Resend 帳號寄信並消耗你的用量,所以一旦懷疑洩漏要立即在 Resend 後台 revoke 舊 key、產生新 key。

常見誤解

  • - 把 API Key 直接寫在前端程式碼或 React 元件裡,瀏覽器原始碼任何人都能看到,等於把密鑰公開在全世界。
  • - 把含有 API Key 的 `.env` 檔 commit 進 git 倉庫,就算之後刪掉這個 commit,git 歷史裡還是查得到,GitHub 掃到會主動通知服務方撤銷。
  • - 整個專案只用一把 API Key 且沒有設 scope 限制,一旦洩漏攻擊者就能做所有操作;應該分環境(test/live)且用最小必要權限的 key。

相關名詞

相關服務

OpenAI APIStripeResend

相關工具