You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Google Ads API遇RefreshError: unauthorized_client问题求助

解决Google Ads API调用时的RefreshError: ('unauthorized_client')问题

针对你遇到的RefreshError: ('unauthorized_client')错误,结合已完成的配置步骤,可从以下核心方向排查解决:

1. 验证刷新令牌的授权范围

生成刷新令牌时,必须请求https://www.googleapis.com/auth/adwords这个核心权限范围。如果授权流程中未指定该范围,令牌会因权限不足触发unauthorized_client错误:

  • 重新生成刷新令牌时,确保授权请求的scope包含上述链接
  • 授权流程中需明确同意Google Ads API的访问权限

2. 确认OAuth授权流程与应用类型匹配

你创建的是Web应用,必须使用**授权码流程(Authorization Code Flow)**生成刷新令牌:

  • 禁止使用隐式授权等其他流程,这类流程生成的令牌无法用于服务器端API调用
  • 正确流程:先获取授权码,再用授权码+客户端密钥交换刷新令牌,而非直接通过客户端密钥生成令牌

3. 检查Google Ads账户关联与配置格式

  • 开发者令牌对应的经理账户必须关联你当前操作的客户ID,否则无法通过权限校验
  • 确认google-ads.yaml中的客户ID格式为XXX-XXX-XXXX(带连字符),不能填写纯数字格式

4. 验证OAuth客户端的发布状态

在Google Cloud Console中:

  • 如果OAuth客户端处于未发布状态,必须将你的邮箱添加到「测试用户」列表,否则非测试用户无法使用该应用
  • 若已发布客户端,确保配置的重定向URI与生成刷新令牌时使用的完全一致

快速验证步骤(重新生成合规的刷新令牌)

使用以下代码生成正确的授权链接,重新获取刷新令牌:

from google_auth_oauthlib.flow import Flow

# 替换为你的客户端密钥文件路径和配置的重定向URI
flow = Flow.from_client_secrets_file(
    "client_secret.json",
    scopes=["https://www.googleapis.com/auth/adwords"],
    redirect_uri="https://your-redirect-uri.com/callback"
)

# 生成授权链接,复制到浏览器完成授权
authorization_url, _ = flow.authorization_url(prompt="consent")
print("授权链接:", authorization_url)

# 授权后,将浏览器跳转的完整URL填入下方,交换刷新令牌
flow.fetch_token(authorization_response="浏览器跳转后的完整URL")
print("新的刷新令牌:", flow.credentials.refresh_token)

将新生成的刷新令牌更新到google-ads.yaml中,重新运行测试代码即可。

内容的提问来源于stack exchange,提问作者Ankit Tripathi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:47:24