如果你写过 Google 商家资料(GBP)的集成代码,一定踩过这几个坑:每小时到期的 OAuth 令牌要手动刷新,分页得用 nextPageToken 一页一页翻,稍不留神就触发 429 限流或者碰上莫名其妙的 503 报错。

一位开发者在管理几百个 GBP 地点页时,被这些问题反复折磨多次之后,索性把解决方案抽成一个开源 SDK——@vitabletech/gbp-sdk。

这个 SDK 直击痛点的设计是自动续期 + 自动翻页:OAuth 令牌在过期前自动刷新,令牌管理逻辑本身做了线程安全处理,调用 listAll 方法时直接帮你把所有分页数据取完。内置的指数退避重试机制负责消化那些不期而至的 429 和 503 响应,调用方不用写任何重试判断。

用起来很简单。new 一个 GBPClient,传进去 Google 的 clientId、clientSecret 和 refreshToken,再指定 tokenStorage 为 "file" 模式——令牌就会被存进本地的 gbp-tokens.json 文件里。logger 是可插拔的,示例里用的是 ConsoleLogger,也可以换掉。

获取账号和地点数据只需两行:client.accounts.listAll() 拉回所有账号,拿到第一个账号名之后,client.locations.listAll(accountName) 就能把该账号下全部地点一次性列出。全异步、全程 TypeScript 类型完备,不依赖任何第三方运行时包。

项目已经完整开源,源码挂在 GitHub vitabletech/gbp-sdk,npm 包同名可直接安装。作者希望有过 GBP API 对接经验的人多提反馈:下一步该补哪些功能?