Google 提供了一个 Ruby 客户端库,用于与 Ad Manager API 交互。 我们建议将客户端库与 RubyGems 搭配使用。
首先,在您选择的 IDE 中创建一个新项目,或将依赖项添加到现有项目。Google 会将客户端库作为 google-ads-ad_manager
发布到 RubyGems。
Gemfile:
gem 'google-ads-ad_manager', '~> 0.1.0'
直接安装:
gem install google-ads-ad_manager
配置凭据
Ruby 客户端库使用 OAuth2 和应用默认凭据 (ADC) 进行身份验证。
ADC 会按顺序在以下位置搜索凭据:
GOOGLE_APPLICATION_CREDENTIALS
环境变量。- 通过 Google Cloud CLI (gcloud CLI) 设置的用户凭据。
- 在 Google Cloud 上运行时,请使用关联到 Google Cloud 资源的服务账号。
如需创建和配置 ADC 凭据,请参阅身份验证。
提交第一个请求
每项 REST 服务都有对应的 Ruby 类,其中包含适用于每个对应 REST 方法的方法。以下示例会读取 Network
。
require "google/ads/ad_manager/v1"
def get_network
# Create a client object. The client can be reused for multiple calls.
client = Google::Ads::AdManager::V1::NetworkService::Rest::Client.new
# Create a request. To set request fields, pass in keyword arguments.
request = Google::Ads::AdManager::V1::GetNetworkRequest.new(name: => 'networks/NETWORK_CODE )'
# Call the get_network method.
result = client.get_network request
# The returned object is of type Google::Ads::AdManager::V1::Network.
p result
end
如需查看其他方法和资源的示例,请参阅 GitHub 代码库 googleapis/google-cloud-ruby
。
记录 HTTP 请求和响应
Ruby 客户端库使用标准 logger
库记录 HTTP 请求和响应。日志记录功能默认处于停用状态。
如需启用日志记录,请将环境变量 GOOGLE_SDK_RUBY_LOGGING_GEMS
设置为值 google-ads-ad_manager
。如果您使用多个 Google API,可以将该值设置为以英文逗号分隔的客户端库 gem 名称列表。默认日志记录行为会将日志写入标准错误流。
或者,您也可以在构建客户端对象时修改 logger
配置,以便在 Ruby 代码中启用日志记录。
require "google/ads/ad_manager/v1"
require "logger"
client = ::Google::Ads::AdManager::V1::NetworkService::Rest::Client.new do |config|
config.logger = Logger.new "my-app.log"
end
处理错误
所有 Ad Manager API 错误都是 Ruby 客户端库中 ::Google::Cloud::Error 的子类。
result = client.get_network request
rescue ::Google::Cloud::Error => e
puts "An error of type #{e.class} occurred with HTTP status #{e.status_code}"
Ad Manager API 错误还包含一个唯一的 request_id
,您可以将其提供给支持团队,以寻求排查问题方面的帮助。以下示例从错误 details
中提取 request_id
。
rescue ::Google::Cloud::Error => e
request_info = e.details.find { |detail| detail.is_a?(Google::Rpc::RequestInfo)}
puts request_info.request_id
构建资源名称
客户端库提供了一些辅助类,用于根据 ID 构建资源名称。
require "google/ads/ad_manager/v1"
# Constructs a String in the format:
# "networks/{networkCode}/orders/{orderId}"
order_name = Google::Ads::AdManager::V1::OrderService::Paths::order_path(:network_code => 123, :order => 456)
配置代理设置
Ruby 客户端库会同时遵循 HTTP_PROXY
和 HTTPS_PROXY
环境变量。