與 Chrome Web Store API 使用指南)
后端【免費(fèi)下載鏈接】google-api-nodejs-clientGoogles officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included.項(xiàng)目地址https://gitcode.com/gh_mirrors/go/google-api-nodejs-client點(diǎn)擊查看免費(fèi)下載本文以src/apis/chromewebstore/CHANGELOG.md的完整版本記錄為主線結(jié)合同目錄下的源碼與發(fā)現(xiàn)文檔系統(tǒng)講解googleapis/chromewebstore客戶端包的演進(jìn)脈絡(luò)、Node.js 版本兼容策略以及 v1.1 / v2 兩代 API 的完整方法面與實(shí)戰(zhàn)用法。讀完本文你將能讀懂該包的每次破壞性變更與 API 更新含義并掌握用 Node.js 上傳、查詢、發(fā)布和管理 Chrome 擴(kuò)展的完整流程。一、包定位Chrome Web Store API 的官方 Node.js 客戶端googleapis/chromewebstore是 google-api-nodejs-client 倉庫當(dāng)前根目錄即該倉庫中按 API 獨(dú)立拆分的子包之一。它封裝了 Chrome Web Store API為開發(fā)者提供關(guān)于應(yīng)用與擴(kuò)展的數(shù)據(jù)訪問以及用于管理它們的開發(fā)者工具。從src/apis/chromewebstore/package.json可以看到該包當(dāng)前版本為7.0.0對(duì)外提供main: build/index.js與types: build/index.d.ts唯一運(yùn)行時(shí)依賴是googleapis-common ^9.0.0這意味著所有鑒權(quán)、請(qǐng)求構(gòu)造、媒體上傳與流式響應(yīng)能力都復(fù)用了 googleapis 生態(tài)的公共基礎(chǔ)設(shè)施。包入口src/apis/chromewebstore/index.ts通過getAPI注冊(cè)了兩個(gè) API 版本export const VERSIONS { v1.1: chromewebstore_v1_1.Chromewebstore, v2: chromewebstore_v2.Chromewebstore, };也就是說同一個(gè)chromewebstore函數(shù)既可以通過google.chromewebstore(v1.1)調(diào)用舊版接口也可以通過google.chromewebstore(v2)調(diào)用新版接口。對(duì)應(yīng)發(fā)現(xiàn)文檔分別位于discovery/chromewebstore-v1.1.jsonrevision 20251015與discovery/chromewebstore-v2.jsonrevision 20260924兩者的baseUrl均為https://chromewebstore.googleapis.com/documentationLink均指向https://developer.chrome.com/docs/webstore/api。1.1 安裝與初始化作為獨(dú)立子包直接安裝即可使用$ npm install googleapis/chromewebstore如果使用的是倉庫根目錄的統(tǒng)一入口src/googleapis.ts則通過google對(duì)象獲取const {google} require(googleapis); const chromewebstore google.chromewebstore(v2);從發(fā)現(xiàn)文檔discovery/chromewebstore-v2.json的auth.oauth2.scopes可以看到該 API 只有兩個(gè) OAuth 2.0 范圍Scope權(quán)限說明https://www.googleapis.com/auth/chromewebstore查看、編輯、更新或發(fā)布你有權(quán)訪問的 Chrome Web Store 擴(kuò)展、主題、應(yīng)用與許可證https://www.googleapis.com/auth/chromewebstore.readonly只讀查看與下載你有權(quán)訪問的擴(kuò)展、應(yīng)用及許可證二、CHANGELOG 全量版本演進(jìn)12 個(gè)版本的完整軌跡src/apis/chromewebstore/CHANGELOG.md記錄了該包從 2025 年 10 月 9 日首次發(fā)布1.0.0到 2026 年 10 月 3 日7.0.0之間共 12 個(gè)版本的完整變更歷史。下面按時(shí)間倒序完整梳理每一條記錄原文鏈接已隱去僅保留實(shí)質(zhì)內(nèi)容版本發(fā)布日期類型變更要點(diǎn)7.0.02026-10-03BREAKING本版本包含破壞性變更同步更新 API 定義0830f896.1.02026-09-23Feature更新 API 定義2c181e76.0.02026-09-14BREAKING所有包all packages再次將 apiary 最低 Node 版本提升到 22issue #40204e5bae05.0.02026-09-09BREAKINGapiary 最低 Node 版本提升到 22issue #4011ec5a6bf4.1.12026-09-09Bug Fix重新加回對(duì) Node 18 的支持eccac1d4.1.02026-09-02Feature/Bug Fix運(yùn)行代碼生成器issue #39925f7d438將生成包中的依賴升級(jí)到 Node 22de9d20d4.0.02026-08-03BREAKING運(yùn)行代碼生成器issue #3955c429a9b3.0.02026-05-28BREAKING運(yùn)行代碼生成器issue #392008443b42.0.22025-12-05Bug Fix更新 API 定義f822cb92.0.12025-11-04Bug Fix更新 API 定義a6cbf722.0.02025-10-15BREAKING運(yùn)行代碼生成器issue #38144ba19d01.0.02025-10-09首版更新 API 定義68c1daa2.1 版本節(jié)奏背后的生成器機(jī)制從版本記錄可以清晰看到兩類變更的交替出現(xiàn)一類是update the API直接更新 API 定義另一類是run the generator重新運(yùn)行代碼生成器。這正是 google-api-nodejs-client 倉庫的自動(dòng)化機(jī)制——所有src/apis/*目錄下的.ts文件均由生成器從 discovery 文檔產(chǎn)出而非手工維護(hù)。每次服務(wù)端 API 變更或生成器升級(jí)都會(huì)觸發(fā)一次子包版本發(fā)布當(dāng)上游 API 的請(qǐng)求/響應(yīng)結(jié)構(gòu)發(fā)生變化時(shí)版本號(hào)就會(huì)以主版本遞增的形式發(fā)布并標(biāo)注 BREAKING CHANGES。2.2 Node.js 版本兼容的反復(fù)橫跳與最終結(jié)論CHANGELOG 中最值得關(guān)注的線索是 2026 年 9 月短短兩周內(nèi) Node 版本策略的多次調(diào)整4.1.02026-09-02將生成包中的依賴升級(jí)到 Node 224.1.12026-09-09隨即加回對(duì) Node 18 的支持說明本次依賴升級(jí)曾短暫破壞 Node 18 兼容性并被緊急修復(fù)5.0.02026-09-09同一天又決定最低 Node 版本提升到 22屬于一次主動(dòng)的破壞性決策issue #40116.0.02026-09-14五天之后再次強(qiáng)調(diào)所有包的最低 Node 版本均為 22issue #4020把 5.0.0 的決策推廣到全部子包統(tǒng)一了政策。最終結(jié)論以src/apis/chromewebstore/package.json中的engines字段為準(zhǔn)當(dāng)前 7.0.0 要求node 22.0.0。這也意味著如果你仍運(yùn)行在 Node 18/20 環(huán)境只能停留在 4.1.1 及之前的版本要跟進(jìn) 7.0.0 的 API 更新必須先升級(jí)運(yùn)行時(shí)。這是任何引入該依賴的項(xiàng)目在規(guī)劃升級(jí)時(shí)必須首先確認(rèn)的前提。三、v1.1 API經(jīng)典的 items 資源與方法面v1.1 是 Chrome Web Store API 的經(jīng)典版本定義于src/apis/chromewebstore/v1.1.ts。該版本只有一個(gè)items資源包含四個(gè)方法覆蓋了增、查、改、發(fā)的完整閉環(huán)方法HTTP 端點(diǎn)說明items.getGET /chromewebstore/v1.1/items/{itemId}獲取你自己的 Chrome Web Store 條目items.insertPOST /chromewebstore/v1.1/items插入上傳一個(gè)新條目items.updatePUT /chromewebstore/v1.1/items/{itemId}更新一個(gè)已有條目items.publishPOST /chromewebstore/v1.1/items/{itemId}/publish發(fā)布一個(gè)條目3.1 核心 SchemaItem、Item2 與 ItemErrorget、insert、update三個(gè)方法都圍繞Schema$Item展開src/apis/chromewebstore/v1.1.tscrxVersion條目的 CRX 版本若 projection 為 draft則是草稿的 CRX 版本id條目的唯一 IDitemError操作的人類可讀狀態(tài)詳情僅英文與你在 Chrome Web Store 上傳應(yīng)用時(shí)看到的錯(cuò)誤信息一致kind固定字符串chromewebstore#item用于標(biāo)識(shí)資源類型publicKey條目的公鑰uploadState操作狀態(tài)取值包括FAILURE、IN_PROGRESS、NOT_FOUND、SUCCESS。發(fā)布方法publish返回的是Schema$Item2src/apis/chromewebstore/v1.1.ts其status數(shù)組可能包含以下狀態(tài)碼NOT_AUTHORIZED、INVALID_DEVELOPER、DEVELOPER_NO_OWNERSHIP、DEVELOPER_SUSPENDED、ITEM_NOT_FOUND、ITEM_PENDING_REVIEW、ITEM_TAKEN_DOWN、PUBLISHER_SUSPENDEDstatusDetail則是對(duì)應(yīng)的可讀解釋。3.2 v1.1 實(shí)戰(zhàn)示例查詢、上傳與發(fā)布查詢條目只讀const {google} require(googleapis); const chromewebstore google.chromewebstore(v1.1); async function main() { const auth new google.auth.GoogleAuth({ scopes: [ https://www.googleapis.com/auth/chromewebstore, https://www.googleapis.com/auth/chromewebstore.readonly, ], }); const authClient await auth.getClient(); google.options({auth: authClient}); const res await chromewebstore.items.get({ itemId: your-extension-id, projection: draft, // 決定返回條目信息的哪個(gè)子集 }); console.log(res.data); } main().catch(e {console.error(e); throw e;});發(fā)布條目含灰度參數(shù)v1.1 的publish支持三個(gè)關(guān)鍵參數(shù)src/apis/chromewebstore/v1.1.tsdeployPercentage目標(biāo)部署百分比合法范圍[0, 100]設(shè)為小于 100 的數(shù)值時(shí)只有對(duì)應(yīng)比例的用戶會(huì)被允許獲得該更新publishTargetURL 中的發(fā)布目標(biāo)區(qū)分大小寫取publishTargettrustedTesters或publishTargetdefault默認(rèn)defaultreviewExemption請(qǐng)求豁免審核并直接發(fā)布僅當(dāng)更新落在可自動(dòng)校驗(yàn)的清單內(nèi)時(shí)有效API 會(huì)用實(shí)時(shí)數(shù)據(jù)校驗(yàn)是否可授予豁免。const res await chromewebstore.items.publish({ itemId: your-extension-id, deployPercentage: 100, publishTarget: default, requestBody: { deployPercentage: 100, reviewExemption: false, target: default, }, });四、v2 API面向現(xiàn)代發(fā)布流程的方法面v2 是當(dāng)前主推版本發(fā)現(xiàn)文檔 revision 20260924定義于src/apis/chromewebstore/v2.ts。它把資源拆成了media與publishers.items兩個(gè)層次方法語義更貼近真實(shí)的開發(fā)者工作流資源方法HTTP 端點(diǎn)說明mediauploadPOST /v2/{name}:upload向已有條目上傳新包支持媒體上傳另提供/upload/v2/...端點(diǎn)publishers.itemscancelSubmissionPOST /v2/{name}:cancelSubmission取消當(dāng)前活躍的提交可用于撤回待審核的提交publishers.itemsfetchStatusGET /v2/{name}:fetchStatus獲取條目狀態(tài)publishers.itemspublishPOST /v2/{name}:publish提交條目以在商店發(fā)布publishers.itemssetPublishedDeployPercentagePOST /v2/{name}:setPublishedDeployPercentage提高已發(fā)布修訂版的目標(biāo)部署百分比v2 中所有方法都使用統(tǒng)一的資源名格式publishers/{publisherId}/items/{itemId}對(duì)應(yīng)代碼中的name必填參數(shù)例如publishers/my-publisher/items/my-item。4.1 上傳新包media.uploadmedia.upload在src/apis/chromewebstore/v2.ts中實(shí)現(xiàn)同時(shí)暴露了普通請(qǐng)求與StreamMethodOptions流式重載。它通過mediaUrl/upload/v2/{name}:upload走媒體上傳通道返回Schema$UploadItemPackageResponseconst {google} require(googleapis); const chromewebstore google.chromewebstore(v2); async function main() { const auth new google.auth.GoogleAuth({ scopes: [https://www.googleapis.com/auth/chromewebstore], }); const authClient await auth.getClient(); google.options({auth: authClient}); const res await chromewebstore.media.upload({ name: publishers/my-publisher/items/my-item, requestBody: {}, media: { mimeType: application/zip, body: fs.createReadStream(./extension.zip), }, }); console.log(res.data); // 響應(yīng)示例 // { crxVersion, itemId, name, uploadState } }響應(yīng)中的uploadState值得注意若為UPLOAD_IN_PROGRESS說明上傳仍在進(jìn)行此時(shí)需要通過fetchStatus輪詢獲取最終結(jié)果成功完成時(shí)crxVersion才會(huì)出現(xiàn)該值取自上傳包 manifest 中的擴(kuò)展版本號(hào)。4.2 查詢條目狀態(tài)fetchStatusfetchStatus返回Schema$FetchItemStatusResponse字段覆蓋了發(fā)布生命周期的各個(gè)關(guān)鍵狀態(tài)itemId/name/publicKey條目標(biāo)識(shí)信息lastAsyncUploadState最近一次異步上傳的狀態(tài)僅當(dāng)過去 24 小時(shí)內(nèi)有過異步上傳時(shí)設(shè)置publishedItemRevisionStatus當(dāng)前已發(fā)布修訂版的狀態(tài)未發(fā)布時(shí)為空submittedItemRevisionStatus已提交待發(fā)布修訂版的狀態(tài)takenDown是否因違反政策被下架可到開發(fā)者后臺(tái)查看詳情warned是否已收到政策警告若不處理將被下架。其中Schema$ItemRevisionStatus攜帶state與distributionChannels發(fā)布渠道數(shù)組Schema$DistributionChannel給出每個(gè)渠道的crxVersion與deployPercentage可用于核對(duì)各發(fā)布渠道的當(dāng)前部署進(jìn)度。4.3 發(fā)布與灰度publish / setPublishedDeployPercentagev2 的publish請(qǐng)求體Schema$PublishItemRequestsrc/apis/chromewebstore/v2.ts比 v1.1 更精細(xì)字段默認(rèn)值說明blockOnWarningsfalse設(shè)為 true 時(shí)若校驗(yàn)存在任何警告則請(qǐng)求失敗詳情寫入error.details否則警告視為非阻塞僅在響應(yīng)中返回供檢查deployInfos開發(fā)者后臺(tái)保存的當(dāng)前值部署信息數(shù)組包含每個(gè)渠道的初始百分比灰度Schema$DeployInfo.deployPercentage0100 的非負(fù)整數(shù)publishTypeDEFAULT_PUBLISH控制通過審核后是立即發(fā)布還是暫存到未來某個(gè)時(shí)間發(fā)布STAGED_PUBLISHskipReviewfalse是否嘗試跳過條目審核API 會(huì)校驗(yàn)條目是否符合免審條件不符合則返回校驗(yàn)錯(cuò)誤const res await chromewebstore.publishers.items.publish({ name: publishers/my-publisher/items/my-item, requestBody: { blockOnWarnings: false, deployInfos: [{deployPercentage: 20}], // 先灰度 20% publishType: DEFAULT_PUBLISH, skipReview: false, }, });setPublishedDeployPercentage則用于在不重新提交審核的前提下提高已發(fā)布修訂版的部署比例——其請(qǐng)求體deployPercentage必須是大于現(xiàn)有目標(biāo)值的 0100 非負(fù)整數(shù)。注意源碼注釋明確說明該能力僅對(duì)七天內(nèi)活躍用戶超過 10,000的條目開放小體量擴(kuò)展無法使用此接口。五、把 CHANGELOG 與源碼對(duì)應(yīng)起來v1.1 與 v2 的方法面對(duì)比將 CHANGELOG 與源碼交叉比對(duì)可以還原出兩條清晰的演進(jìn)線索API 能力升級(jí)v1.1 只有items資源四件套而 v2 引入了media獨(dú)立上傳資源與publishers.items的狀態(tài)查詢/取消提交/灰度調(diào)整能力。CHANGELOG 中多次update the API2.0.1、2.0.2、6.1.0、7.0.0正是 v2 方法面逐步補(bǔ)全的過程其中 7.0.0 標(biāo)記 BREAKING意味著 v2 的請(qǐng)求/響應(yīng)結(jié)構(gòu)在最近一次同步中發(fā)生了變化升級(jí)時(shí)需回歸測試。工程約束變化4.1.0 → 6.0.0 之間圍繞 Node 22 的依賴升級(jí)與回退、再統(tǒng)一最終落地為當(dāng)前package.json的engines.node 22。對(duì)于仍在維護(hù)舊代碼的開發(fā)者建議新項(xiàng)目直接使用 v2google.chromewebstore(v2)獲得更完整的發(fā)布生命周期管理能力遷移時(shí)注意資源命名從itemId參數(shù)切換為publishers/{publisherId}/items/{itemId}的name參數(shù)升級(jí)到 7.0.0 前先確認(rèn)運(yùn)行環(huán)境滿足 Node 22 要求并針對(duì)fetchStatus/publish的響應(yīng)字段差異補(bǔ)充類型檢查。六、延伸閱讀路徑版本歷史全文src/apis/chromewebstore/CHANGELOG.md子包入口與版本注冊(cè)src/apis/chromewebstore/index.tsv1.1 實(shí)現(xiàn)src/apis/chromewebstore/v1.1.tsv2 實(shí)現(xiàn)src/apis/chromewebstore/v2.ts包元數(shù)據(jù)版本、Node 版本要求、依賴src/apis/chromewebstore/package.json服務(wù)端 API 定義revision 20251015discovery/chromewebstore-v1.1.json服務(wù)端 API 定義revision 20260924discovery/chromewebstore-v2.json贊分享后端【免費(fèi)下載鏈接】google-api-nodejs-clientGoogles officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included.項(xiàng)目地址https://gitcode.com/gh_mirrors/go/google-api-nodejs-client點(diǎn)擊查看免費(fèi)下載相關(guān)推薦從 1.0.0 到 22.1.0google-api-nodejs-client 中 Notebooks API 客戶端的版本演進(jìn)全解析從 1.0.0 到 22.1.0google api nodejs client 中 Notebooks API 客戶端的版本演進(jìn)全解析 本文以 src/ap后端在線拍賣系統(tǒng)低層設(shè)計(jì)LLD實(shí)戰(zhàn)Java 單例服務(wù)、并發(fā)競價(jià)與觀察者通知機(jī)制解析在線拍賣系統(tǒng)低層設(shè)計(jì)LLD實(shí)戰(zhàn)Java 單例服務(wù)、并發(fā)競價(jià)與觀察者通知機(jī)制解析 在線拍賣系統(tǒng)是低層設(shè)計(jì)Low Level Design, LLD面試與后端google-api-nodejs-client 之 datalineage 客戶端庫版本演進(jìn)解析從 1.0.0 到 9.0.1 的 CHANGELOG 全解讀google api nodejs client 之 datalineage 客戶端庫版本演進(jìn)解析從 1.0.0 到 9.0.1 的 CHANGELOG 全解后端上一篇Clawd on Desk 工程指南面向 AI Agent 的桌寵運(yùn)行時(shí)架構(gòu)與集成操作手冊(cè)下一篇BilibiliDown視頻下載工具完整指南輕松獲取B站高清視頻資源創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考