サービス アカウントのワークフロー

このガイドでは、サービス アカウントを使用して Google Ads API にアクセスする方法について説明します。

サービス アカウントは、個々のエンドユーザーではなく、アプリに属するアカウントです。サービス アカウントでは、人による認証を必要としない OAuth 2.0 フローが使用されます。代わりに、アプリのみがアクセスできるキーファイルが使用されます。

サービス アカウントの主なメリットは次の 2 つです。

  • Google 広告アカウントへの Google Ads API アクセスの承認は、Google 広告 UI で提供される承認機能とアカウント管理機能を活用して、構成手順として行われます。これにより、OAuth 2.0 フローを構築したり、ユーザー操作、ユーザー認証情報の保存、トークン管理に関連する複雑な処理を行ったりする必要がなくなり、デベロッパーの労力を軽減できます。

  • Google 広告アカウントへのアクセス権限は個々のユーザー認証情報に関連付けられていないため、アクセス権限を最初に承認した従業員がチームや会社を離れた後も、アクセス権限を継続させたい場合に便利です。

アカウント アクセスの設定

  1. まず、サービス アカウントと認証情報を作成します。

    サービス アカウント キーを JSON 形式でダウンロードし、サービス アカウント ID とメールアドレスをメモします。

  2. 管理者として Google 広告アカウントにログインします。[管理者] > [アクセスとセキュリティ] に移動します。

  3. [ユーザー] タブの [+] ボタンをクリックします。

  4. [メール] 入力ボックスにサービス アカウントのメールアドレスを入力します。適切なアカウント アクセスレベルを選択し(サービス アカウントは [メールのみ] のアクセスレベルをサポートしていません)、[アカウントを追加] ボタンをクリックします。

  5. サービス アカウントにアクセス権が付与されます。

  6. 省略可: デフォルトでは、サービス アカウントに管理者権限を付与することはできません。最小権限の原則に従い、API 呼び出しで必要な場合にのみ管理者アクセス権を付与します。アクセス権は次のようにアップグレードできます。

    • [アクセスレベル] 列で、サービス アカウントのアクセスレベルの横にあるプルダウン矢印をクリックします。
    • プルダウン リストから [管理者] を選択します。

クライアント ライブラリの構成

クライアント ライブラリの構成方法については、プログラミング言語に対応するタブを選択してください。サービス アカウントが Google 広告クライアント センター(MCC)アカウントを介してクライアント アカウントにアクセスする場合は、login-customer-id(または loginCustomerId)を、ハイフンなしのその MCC アカウントの 10 桁のお客様 ID に設定します(ログインのお客様 ID を参照)。

Java

構成で秘密鍵の JSON パスを設定します。ads.properties ファイルを使用している場合は、次のように追加します。

api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH

詳細については、構成ガイドをご覧ください。

.NET

GoogleAdsConfig インスタンスで OAuth2Mode と OAuth2SecretsJsonPath を設定し、それを使用して GoogleAdsClient オブジェクトを初期化します。

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
    OAuth2SecretsJsonPath = "JSON_KEY_FILE_PATH",
    // ...
};
GoogleAdsClient client = new GoogleAdsClient(config);

詳細については、構成ガイドをご覧ください。

Python

構成で秘密鍵の JSON パスを設定します。google-ads.yaml ファイル、YAML 文字列、または dict を使用している場合は、次のように追加します。

json_key_file_path: JSON_KEY_FILE_PATH

環境変数を使用している場合は、Bash 構成または環境に次を追加します。

export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH

詳細については、構成ガイドをご覧ください。

PHP

google_ads_php.ini ファイルで次のキーを構成します。

[OAUTH2]
; For service account flow.
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"

詳細については、構成ガイドをご覧ください。

Ruby

google_ads_config.rb で次のキーを構成します。

c.keyfile = 'JSON_KEY_FILE_PATH'

詳細については、構成ガイドをご覧ください。

Perl

構成で秘密鍵の JSON パスを設定します。googleads.properties ファイルを使用している場合は、次のように追加します。

jsonKeyFilePath=JSON_KEY_FILE_PATH

環境変数を使用している場合は、Bash 構成または環境に次を追加します。

export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH

詳細については、構成ガイドをご覧ください。

curl

まず、gcloud CLI でサービス アカウントをアクティブな認証情報として設定します。

gcloud auth login --cred-file=JSON_KEY_FILE_PATH

次に、Google Ads API の OAuth 2.0 アクセス トークンを取得します。

gcloud auth \
  print-access-token \
  --scopes='https://www.googleapis.com/auth/adwords'

API 呼び出しでアクセス トークンを使用できます。次の例は、GoogleAdsService.SearchStream メソッドを使用してアカウント内のキャンペーンを取得し、キャンペーン レポートを実行する方法を示しています。このガイドでは、レポートの詳細については説明しません。

curl -i -X POST \
  https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "login-customer-id: LOGIN_CUSTOMER_ID" \
  --data-binary "@query.json"

query.json の内容は次のとおりです。

{
  "query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}