manifest.json 出發,為 Chrome、Edge、Firefox 與 Safari 建置並執行瀏覽器擴充功能,並在 extension build --zip 產出的套件處止步,因此下面這些值是給你自己的提交工具用的。
自動化提交到 Chrome Web Store 需要兩個識別碼與一組憑證:
OAuth 三件組與服務帳戶只需要其中之一,不必兩者都設。兩者都設定時,服務帳戶優先。
extension.dev 是 Extension.js 的贊助方,可以在同一個專案裡完成發佈、商店送審與分享。它的文件涵蓋
extension build 之後的步驟。前置條件
- 在 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(帳戶),把這個服務帳戶的 電子郵件地址加入你的發布者帳戶。一個發布者帳戶對應一個服務帳戶。

