OAuth 三件組與服務帳戶只需要其中之一,不必兩者都設。兩者都設定時,服務帳戶優先。
前置條件
- 在 Chrome Web Store 開發者主控台 註冊一個開發者帳戶。註冊需要一次性支付 5 美元。
- 建置一個商店 zip(
npx extension build --browser chrome --zip)。 - 在主控台中手動上傳這個 zip,藉此建立該項目。
- 從該項目的主控台 URL 中複製 extension ID。
- 複製 publisher ID:它就是你開發者主控台 URL
chrome.google.com/webstore/devconsole/<UUID>裡的那組 UUID。
不要用 Google OAuth Playground 產生 refresh token。Playground 需要一個 Web
application 類型的用戶端與它的重新導向 URI,而 Chrome Web Store 的流程需要
Desktop app 類型的用戶端。把兩者湊在一起會以
redirect_uri_mismatch 失敗。建立 OAuth 用戶端
- 在 Google Cloud Console 建立或選擇一個專案。
- 為該專案啟用 Chrome Web Store API。
- 在憑證頁面建立一個 OAuth client ID,應用程式類型選 Desktop app(桌面應用程式)。Web application 類型的用戶端在這裡行不通。
- 複製 client ID 與 client secret。
- 用
127.0.0.1上的 loopback 同意流程為該用戶端產生一組 refresh token, 這正是 Desktop app 類型用戶端接受的重新導向。該權杖必須取得https://www.googleapis.com/auth/chromewebstore這個 scope 的授權。 改用服務帳戶可以略過這一步,下一節會說明。
替代方案:服務帳戶
Google Cloud 服務帳戶完全避開 OAuth 同意流程,是 CI 場景中最穩定的選擇:- 在 Google Cloud Console 中,於那個已啟用 Chrome Web Store API 的同一個專案裡 建立一個服務帳戶。
- 為它建立一組 JSON 金鑰並下載該檔案。
- 在 Chrome Web Store 開發者主控台中開啟 Account(帳戶),把這個服務帳戶的 電子郵件地址加入你的發布者帳戶。一個發布者帳戶對應一個服務帳戶。

