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

无法通过服务账号认证DoubleClick Bid Manager API的技术求助

解决DoubleClick Bid Manager API服务账号认证失败问题

看起来你在使用服务账号认证DBM API时踩了几个常见的坑,我来帮你梳理下解决方案:

首先,理清核心问题:你用错了认证文件和方法

你现在用的client_secrets.json是OAuth 2.0客户端ID的配置文件,而服务账号认证需要的是服务账号JSON密钥文件——这俩完全是不同的东西。另外,Google::Auth.get_application_default的工作逻辑是优先读取环境变量GOOGLE_APPLICATION_CREDENTIALS指向的服务账号密钥,而不是你下载的client_secrets.json。

步骤1:获取正确的服务账号密钥文件

  1. 登录GCP控制台,找到你的项目
  2. 进入「IAM与管理」>「服务账号」
  3. 找到你要用于DBM API的服务账号,点击「密钥」>「添加密钥」>「创建新密钥」
  4. 选择JSON格式,下载这个密钥文件(比如命名为dbm-service-account-key.json)

步骤2:确保服务账号拥有正确的权限

这一步很关键,很多认证失败都是因为权限没配全:

  • GCP层面:给服务账号添加DoubleClick Bid Manager API Editor角色(或者更细粒度的合适角色)
  • DBM层面:必须在DoubleClick Bid Manager界面里,把服务账号的邮箱(比如xxx@your-project.iam.gserviceaccount.com)添加为授权用户,分配对应的操作权限(比如编辑权限)——DBM的权限是单独管控的,不是只靠GCP IAM就能生效的。

步骤3:修改你的Ruby认证代码

方式一:通过环境变量加载密钥(推荐)

先设置环境变量:

# Linux/macOS终端
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/dbm-service-account-key.json"

# Windows命令行
set GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\dbm-service-account-key.json"

然后修改代码:

require 'google/apis/doubleclickbidmanager_v1'
require 'googleauth'

service = Google::Apis::DoubleclickbidmanagerV1::DoubleClickBidManagerService.new

# 加载默认认证(会自动读取环境变量里的密钥)
scope = ['https://www.googleapis.com/auth/doubleclickbidmanager']
service.authorization = Google::Auth.get_application_default(scope)

# 可选:如果需要刷新令牌,添加这行
service.authorization.fetch_access_token!

# 调用API
response = service.download_line_items
puts response.inspect

方式二:在代码中直接加载密钥文件

如果不想设置环境变量,可以直接在代码里指定密钥路径:

require 'google/apis/doubleclickbidmanager_v1'
require 'googleauth'
require 'googleauth/stores/file_token_store'

scope = ['https://www.googleapis.com/auth/doubleclickbidmanager']
key_path = '/path/to/your/dbm-service-account-key.json'

# 加载服务账号密钥
authorizer = Google::Auth::ServiceAccountCredentials.make_creds(
  json_key_io: File.open(key_path),
  scope: scope
)

service = Google::Apis::DoubleclickbidmanagerV1::DoubleClickBidManagerService.new
service.authorization = authorizer
service.authorization.fetch_access_token!

# 调用API
response = service.download_line_items
puts response.inspect

最后排查几个常见问题

  • 确认DoubleClick Bid Manager API已经在GCP控制台的「API与服务」>「已启用的API」中启用
  • 检查服务账号邮箱是否正确添加到DBM的授权列表里(这一步很容易漏掉)
  • 确保密钥文件没有权限问题(比如代码能否读取到该文件)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:31:45