App Script调用Google Content API返回403错误项目ID不匹配问询
问题核心原因
ScriptApp.getOAuthToken()默认返回的是Apps Script自动创建的隐藏默认GCP项目的授权令牌,错误提示中的未知项目ID就是这个隐藏项目的ID,该项目默认没有启用Content API for Shopping,且你无法直接访问管理,才会出现项目不存在、ID不匹配的报错。你之前配置的客户端ID、redirect URI是针对三方OAuth授权流程的,不影响服务账号调用的路由逻辑。
解决方案
- 切换Apps Script绑定的GCP项目
打开当前Apps Script项目的设置页,找到「Google Cloud Platform (GCP) 项目」模块,点击更改项目,输入你存放服务账号、已经启用Content API for Shopping的GCP项目编号,完成绑定。 - 替换令牌获取逻辑
不需要继续使用ScriptApp.getOAuthToken()获取令牌,直接通过你已经引入的OAuth2库生成服务账号专属令牌,参考代码:function getContentAPIService() { return OAuth2.createService('ShoppingContentAPI') .setTokenUrl('https://oauth2.googleapis.com/token') .setIssuer('你的服务账号邮箱地址') .setPrivateKey('你的服务账号私钥内容') .setScope('https://www.googleapis.com/auth/content') } // 调用API时使用该方法获取令牌 const accessToken = getContentAPIService().getAccessToken() - 补充权限配置
确认你的服务账号已被添加到对应的Google Merchant Center账号中,且分配了足够的操作权限,避免后续调用接口时出现新的权限报错。 - 配置生效后等待3-5分钟再发起测试,避免GCP配置延迟导致的临时报错。
内容的提问来源于stack exchange,提问作者lightfoot34
相关产品推荐
相关产品推荐

