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

このガイドでは、サービス アカウントを使って 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. サービス アカウントにアクセス権が付与されます。

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

クライアント ライブラリの構成方法については、プログラミング言語に対応するタブを選択してください。

Java

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

api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH

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

.NET

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

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

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

Python

構成で秘密鍵の JSON パスを設定します。google-ads.yaml file、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 で次のキーを構成します。詳細については、構成ガイドをご覧ください。

; 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 パスと委任アカウント ID を設定します。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=PATH_TO_CREDENTIALS_JSON

次に、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/v21/customers/CUSTOMER_ID/googleAds:searchStream \
   -H "Content-Type: application/json" \
   -H "Authorization: Bearer ACCESS_TOKEN" \
   -H "developer-token: DEVELOPER_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"
}