客户端调用GCP API返回API_KEY_INVALID错误的解决求助
你遇到的400错误是两个常见配置遗漏导致的,按以下步骤排查即可解决:
- 启用Cloud Resource Manager API
你当前能正常调用Compute相关接口,说明Compute API已经在你创建OAuth凭据的GCP项目中启用,但Cloud Resource Manager API是独立的服务,需要单独启用:进入对应GCP项目的「API和服务」→「启用API和服务」页面,搜索「Cloud Resource Manager API」,点击启用后等待5分钟左右生效。 - 初始化gapi客户端时补充API Key参数
GCP的大部分公开API即使使用OAuth2用户凭据授权,也要求在客户端初始化时传入有效的API Key作为应用身份标识,你之前的初始化配置大概率缺失了该参数:- 进入GCP项目「API和服务」→「凭据」页面,创建一个浏览器类型的API Key,可配置HTTP Referrer限制为你的Web应用域名避免被滥用
- 将API Key添加到gapi.client.init的配置中,示例代码如下:
gapi.client.init({ apiKey: '你创建的有效API Key', clientId: '你的OAuth客户端ID', discoveryDocs: ["https://cloudresourcemanager.googleapis.com/$discovery/rest?version=v1"], scope: 'https://www.googleapis.com/auth/cloud-platform.read-only https://www.googleapis.com/auth/compute.readonly' }).then(() => { // 初始化完成后再执行登录、发起请求逻辑 }) - 可选:请求手动附加令牌校验
如果修改初始化配置后仍然报错,可在发起请求时手动带上已授权的访问令牌,排除令牌自动附加失败的问题:const accessToken = gapi.auth.getToken().access_token; var request = gapi.client.request({ 'method': 'GET', 'path': 'https://cloudresourcemanager.googleapis.com/v1/projects', 'headers': { 'Authorization': `Bearer ${accessToken}` } })
内容的提问来源于stack exchange,提问作者bartekmo
相关产品推荐
相关产品推荐

