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