你只需要 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上的本地回环授权流程为该客户端生成一个 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(账号),把这个服务账号的 邮箱地址添加到你的发布者账号下。一个发布者账号对应一个服务账号。

