認証と承認

他の Google API と同様に、Google Ads API は認証と認可に OAuth 2.0 プロトコルを使用します。OAuth 2.0 を使用すると、Google Ads API クライアント アプリは、ユーザーのログイン情報を処理または保存することなく、ユーザーの Google 広告アカウントにアクセスできます。

このガイドでは、最も一般的な 3 つの OAuth 2.0 フローを使用して Google Ads API 認証用の Java クライアント ライブラリを構成する方法と、必要な認証情報について説明します。

Google Ads API のアクセスモデルについて詳しくは、Google 広告のアクセスモデル ガイドをご覧ください。

認証情報

Google Ads API にアクセスするには、OAuth 2.0 認証情報と、場合によってはログイン用のお客様 ID が必要です。

OAuth 2.0 認証情報

Google 広告アカウントにアクセスできる Google アカウント ユーザーとして認可するには、OAuth 2.0 認証情報のセットを指定する必要があります。必要な認証情報の種類は、使用する OAuth 2.0 フローによって異なります。

このライブラリは、次の 3 つのフローをサポートしています。

  • サービス アカウント フロー
  • シングル ユーザー認証フロー
  • マルチユーザー認証フロー

Google Ads API の OAuth フローの詳細については、OAuth の概要をご覧ください。必要な認証情報を取得するには、ニーズに最適なフローの手順に沿って操作してください。

ログイン用お客様 ID

必要に応じて、広告配信中アカウントへのアクセス権を提供するマネージャー アカウントのお客様 ID を指定します。マネージャー アカウントを介してクライアント アカウントにアクセスする場合は、これを指定する必要があります。お客様 ID へのパス上のすべてのマネージャー アカウントを指定する必要はありません。アクセス権限に使用している最上位のマネージャー ID のみを指定します。詳細については、関連ドキュメントをご覧ください。

クライアント ライブラリでは、ログイン お客様 ID は ads.properties ファイルの api.googleads.loginCustomerId キーで指定されます。

構成

クライアント ライブラリは、ads.properties ファイル、環境変数、またはプログラムで構成できます。このガイドでは、ads.properties ファイルの使用に焦点を当てています。すべてのオプションの詳細については、構成ガイドをご覧ください。

ads.properties ファイルを使用する場合は、ホーム ディレクトリ ~/ads.properties に配置します。

OAuth ワークフロー

Google Ads API を使用する際に、よく使われるワークフローが 3 つあります。

サービス アカウント フロー

ワークフローに人間の操作が必要ない場合は、このワークフローをおすすめします。このワークフローでは、ユーザーが Google 広告アカウントにサービス アカウントを追加する構成手順が必要です。アプリは、サービス アカウントの認証情報を使用して、ユーザーの Google 広告アカウントを管理できます。

秘密鍵の JSON ファイルを取得したら、ads.properties ファイルに次の行を追加します。

api.googleads.serviceAccountSecretsPath=INSERT_PATH_TO_JSON_HERE
# Only add this key if you are using Google Workspace domain-wide delegation
# to impersonate a user who has access to the Google Ads account.
# api.googleads.serviceAccountUser=USER_EMAIL_TO_IMPERSONATE

詳細については、サービス アカウントのワークフロー ガイドをご覧ください。

シングル ユーザー認証フロー

このワークフローは、サービス アカウントを使用できない場合に使用できます。このワークフローでは、次の 2 つの構成手順が必要です。

  1. Google Ads API を使用して管理するすべてのアカウントへのアクセス権を 1 人のユーザーに付与します。一般的な方法は、ユーザーに Google Ads API MCC アカウントへのアクセス権を付与し、その MCC アカウントの下にあるすべてのターゲット Google 広告アカウントをリンクすることです。
  2. ユーザーが gcloud CLI や GenerateUserCredentials コードサンプルなどのコマンドライン ツールを実行して、ユーザーに代わってすべての Google 広告アカウントを管理することをアプリに許可します。

これらの認証情報を取得したら、ads.properties ファイルに次の行を追加します。

api.googleads.clientId=INSERT_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_REFRESH_TOKEN_HERE

詳細については、単一ユーザー認証ワークフロー ガイドをご覧ください。

マルチユーザー認証フロー

このワークフローは、アプリでユーザーがログインし、アプリがユーザーに代わって Google 広告アカウントを管理することを承認できる場合におすすめです。GenerateUserCredentials のコード例は、実行時にユーザー認証を取得して、ユーザーに代わって Google 広告アカウントを管理する方法を示すコマンドライン ツールです。このコード例は、ユーザー認証を必要とするデスクトップ アプリやウェブアプリを構築する際の参考として使用できます。

マルチユーザー アプリケーションの場合は、アプリケーションの OAuth 2.0 クライアント ID とクライアント シークレットを ads.properties(または別の構成ストア)に保存し、各エンドユーザーの更新トークンをアプリケーション データベースに安全に保存して、UserCredentials と GoogleAdsClient のビルド時にプログラムで渡します。

api.googleads.clientId=INSERT_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_CLIENT_SECRET_HERE

詳細については、マルチユーザー認証ワークフロー ガイドをご覧ください。

複数のアカウントを管理する

ユーザーが複数の Google 広告アカウントを管理することはよくあります。アカウントに直接アクセスするか、Google 広告クライアント センター(MCC)アカウントを使用します。Java クライアント ライブラリには、このようなケースを処理する方法を示す次のコード例が用意されています。

  1. GetAccountHierarchy のコード例は、Google 広告 MCC アカウントのすべてのアカウントのリストを取得する方法を示しています。
  2. ListAccessibleCustomers のコード例は、ユーザーが直接アクセスできるすべてのアカウントのリストを取得する方法を示しています。これらのアカウントは、loginCustomerId 設定の有効な値として使用できます。

アプリケーションのデフォルト認証情報

Java クライアント ライブラリは、アプリケーションのデフォルト認証情報による認証もサポートしています。

これは、ローカル開発や、異なる Google API に対する開発で特に役立ちます。必要な OAuth 2.0 スコープにアクセスできる限り、同じ認証情報を再利用できるためです。

Google Ads API の場合、アプリケーションのデフォルト認証情報が https://www.googleapis.com/auth/adwords OAuth 2.0 スコープにアクセスできることを確認します。

アプリケーションのデフォルト認証情報を使用するには、ads.properties ファイルで api.googleads.useApplicationDefaultCredentials オプションを true に設定します(または GoogleAdsClient.newBuilder() で .enableApplicationDefaultCredentials() を呼び出します)。アプリケーションのデフォルト認証情報を使用する場合、クライアント ID、クライアント シークレット、更新トークンは設定しないでください。