Ruby

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 会按顺序在以下位置搜索凭据:

  1. GOOGLE_APPLICATION_CREDENTIALS 环境变量。
  2. 通过 Google Cloud CLI (gcloud CLI) 设置的用户凭据。
  3. 在 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_PROXYHTTPS_PROXY 环境变量。