階段 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