このガイドでは、サービス アカウントを使って Google Ads API にアクセスする方法について説明します。
サービス アカウントは、個々のエンドユーザーではなく、アプリに属するアカウントです。サービス アカウントを使用すると、ウェブアプリと Google サービス間のサーバー間通信が可能になります。サービス アカウントの代わりにアプリによって Google API が呼び出されるため、ユーザーが直接関与することはありません。
サービス アカウントは手動認証を必要としない OAuth 2.0 フローに対応しており、アプリケーションだけがアクセスできるキーファイルを使用します。
サービス アカウントの主なメリットは次の 2 つです。
Google API へのアクセスに必要な承認作業を、設定の一環として行います。そのため、手動操作が必要となる OAuth 2.0 の他のフローでは、関連する面倒な作業が必要ありません。
OAuth 2.0 アサーション フローでは、必要に応じて他のユーザーになり代わってアプリケーションを機能させることができます。
サービス アカウントを使用して承認するには、直接承認する方法と権限借用による承認(非推奨)の 2 つの方法があります。
[推奨] アカウントへの直接アクセスによる承認
このオプションでは、サービス アカウントに Google 広告アカウントへの直接アクセス権を付与します。
アカウント アクセスの設定
まず、サービス アカウントと認証情報を作成します。
サービス アカウント キーを JSON 形式でダウンロードし、サービス アカウント ID とメールアドレスをメモします。
管理者として Google 広告アカウントにログインします。[管理者] > [アクセスとセキュリティ] に移動します。
[ユーザー] タブの [+] ボタンをクリックします。
[メール] 入力ボックスにサービス アカウントのメールアドレスを入力します。アカウントのアクセス権限の適切なレベルを選択し、[アカウントを追加] ボタンをクリックします。メール権限と管理者権限はサービス アカウントではサポートされていません。
サービス アカウントにアクセス権が付与されます。
クライアント ライブラリの構成
クライアント ライブラリの構成方法については、プログラミング言語に対応するタブを選択してください。
Java
構成で秘密鍵の JSON パスを設定します。ads.properties
ファイルを使用している場合は、次のように追加します。
api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH
詳細については、構成ガイドをご覧ください。
.NET
App.config / Web.config
で次のキーを構成します。詳細については、構成ガイドをご覧ください。
<add key="OAuth2Mode" value="SERVICE_ACCOUNT" />
<add key="OAuth2SecretsJsonPath" value="JSON_KEY_FILE_PATH" />
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
[非推奨] 権限借用を使用した認可
このオプションでは、サービス アカウントを使用して、Google 広告アカウントにアクセスできるユーザーの権限を借用します。この方法は、Google Workspace をご利用のお客様のみを対象としています。サービス アカウントは、同じ Google Workspace 内のユーザー(メールアドレス)の権限を借用することしかできません。
前提条件
mydomain.com
やmybusiness.com
など、所有している Google Workspace ドメインGoogle Ads API 開発者トークン(可能な場合はテスト アカウントも)
使用している言語用のクライアント ライブラリ
Google Ads API 用に設定された Google API Console プロジェクト
アクセスする Google 広告アカウントの権限を持つ Google 広告ユーザー。
サービス アカウントのアクセス設定
ユーザーのなり代わりはドメイン単位でのみ管理されるため、Google OAuth 2.0 でサービス アカウントとアサーション フローを使用するには、Google Workspace にご自分のドメインを登録しておく必要があります。アプリとそのユーザーは、ドメイン内の任意のユーザーを偽装できるようになります。
まず、サービス アカウントと認証情報を作成します。
サービス アカウント キーを JSON 形式でダウンロードし、サービス アカウント ID をメモします。
サービス アカウント ID と Google Ads API スコープ(
https://www.googleapis.com/auth/adwords
)をドメイン管理者に共有します。ドメイン管理者に、ドメイン全体の権限をサービス アカウントに委任するよう依頼します。
ドメイン管理者の方は、ヘルプセンターの手順に沿って操作してください。
以上でサービス アカウントを使用し、OAuth 2.0 アサーション フローを介して Google 広告アカウントにアクセスできるようになりました。
クライアント ライブラリの構成
クライアント ライブラリの構成方法については、プログラミング言語に対応するタブを選択してください。
Java
構成で秘密鍵の JSON パスと委任アカウント ID を設定します。ads.properties
ファイルを使用している場合は、次のように追加します。
api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH
api.googleads.serviceAccountUser=IMPERSONATED_EMAIL
詳細については、構成ガイドをご覧ください。
.NET
App.config / Web.config
で次のキーを構成します。詳細については、構成ガイドをご覧ください。
<add key="OAuth2Mode" value="SERVICE_ACCOUNT" />
<add key="OAuth2SecretsJsonPath" value="JSON_KEY_FILE_PATH" />
<!-- Supply the email address of the user to impersonate. -->
<add key="OAuth2PrnEmail" value="IMPERSONATED_EMAIL" />
Python
構成で秘密鍵の JSON パスと権限を借用するメールアドレスを設定します。google-ads.yaml file
、YAML 文字列、または dict
を使用している場合は、次のように追加します。
json_key_file_path: JSON_KEY_FILE_PATH
impersonated_email: IMPERSONATED_EMAIL
環境変数を使用している場合は、Bash 構成または環境に次の内容を追加します。
export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
export GOOGLE_ADS_IMPERSONATED_EMAIL=IMPERSONATED_EMAIL
PHP
google_ads_php.ini
で次のキーを構成します。詳細については、構成ガイドをご覧ください。
; For service account flow.
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"
impersonatedEmail = "IMPERSONATED_EMAIL"
Ruby
google_ads_config.rb
で次のキーを構成します。
c.keyfile = 'JSON_KEY_FILE_PATH'
c.impersonate = 'IMPERSONATED_EMAIL'
Perl
構成で秘密鍵の JSON パスと委任アカウント ID を設定します。googleads.properties
ファイルを使用している場合は、次のように追加します。
jsonKeyFilePath=JSON_KEY_FILE_PATH
impersonatedEmail=IMPERSONATED_EMAIL
環境変数を使用している場合は、Bash 構成または環境に次の内容を追加します。
export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
export GOOGLE_ADS_IMPERSONATED_EMAIL=IMPERSONATED_EMAIL
セキュリティに関する懸念
サービス アカウントには Google Workspace ドメインのドメインレベルの委任制御があるため、サービス アカウントに承認済みの Google サービスへのアクセスを許可するキーのファイルは、安全な場所に保管することが重要になります。このサービス アカウントにはドメインのすべてのユーザーになり代わることができる権限が付与されるため、ファイルの保護は特に重要です。
また、サービス アカウントがアクセスできる API を必要最小限のセットに限定することも効果的です。これは、サービス アカウントのキーファイルが不正使用された場合に、攻撃者がアクセスできるデータ量を制限するための予防措置です。