Google Ads API认证报错:Credentials failed to obtain metadata求助
Google Ads API认证错误排查:Credentials failed to obtain metadata
错误场景
调用GoogleAdsService/Search方法发起请求时触发Credentials failed to obtain metadata错误,应用基于Spring Boot开发,已在google-ads.properties中配置clientId、clientSecret、refreshToken、developerToken及loginCustomerId等凭证,且已验证凭证正确性与API访问权限,但认证仍失败。
请求与响应详情
请求信息
MethodName: google.ads.googleads.v16.services.GoogleAdsService/Search Endpoint: googleads.googleapis.com:443 Headers: {developer-token=REDACTED, login-customer-id=9854212609, x-goog-api-client=gl-java/17.0.10__Oracle-Corporation gccl/31.0.0 gapic/31.0.0 gax/2.47.0 grpc/1.62.2} Body: customer_id: "9854212609" query: "SELECT campaign.id, campaign.name FROM campaign"
响应信息
Headers: null Body: null Failure message: null Status: Status{code=UNAVAILABLE, description=Credentials failed to obtain metadata, cause=com.google.auth.oauth2.GoogleAuthException: com.google.api.client.http.HttpResponseException: 401 Unauthorized POST https://oauth2.googleapis.com/token
排查与解决建议
- 检查Refresh Token有效性:确认refresh token未过期、未被撤销,且生成token时使用的OAuth客户端(clientId/clientSecret)与当前配置完全一致;注意离线类型的refresh token若长期未使用或账号权限变更可能会失效
- 验证OAuth客户端配置:确保clientId和clientSecret无拼写错误,客户端类型为桌面/其他(若通过OAuth 2.0 Playground生成token,需对应此类型),且已在Google Cloud Console中启用Google Ads API
- 核对login-customer-id格式:配置文件中的loginCustomerId需为纯数字,不能包含连字符或其他符号,确认与请求中使用的
9854212609格式一致 - 网络环境检测:确认应用服务器可正常访问
oauth2.googleapis.com,排查防火墙、代理是否拦截了token请求;可直接通过curl测试POST请求到该端点,验证是否能获取access token - 版本兼容性检查:当前使用的Google Ads Java库版本为31.0.0,确认其与API v16的兼容性,尝试升级至最新稳定版
- 凭证加载逻辑验证:检查GoogleAdsClient是否正确读取了
google-ads.properties中的所有字段,可在代码中打印脱敏后的加载值,确认无遗漏或加载错误 - 账号权限确认:确保OAuth授权的账号拥有目标客户账号的访问权限(如管理员、标准操作权限),同时确认developer token已关联到正确的Google Ads账号
内容的提问来源于stack exchange,提问作者Arifeen mahmud
相关产品推荐
相关产品推荐

