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

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

サービス アカウントは、個々のエンドユーザーではなく、アプリに属するアカウント です。サービス アカウントは手動認証を必要としない OAuth 2.0 フローに対応しており、アプリケーションだけがアクセスできるキーファイルを使用します。

サービス アカウントを使用すると、主に次の 2 つのメリットがあります。

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

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

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

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

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

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

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

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

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

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

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

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

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

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 広告 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/v24/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"
}