認証と認可

他の 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 Ads アクセスモデル ガイドをご覧ください。

認証情報

Google Ads API にアクセスするには、デベロッパー トークン、OAuth 2.0 認証情報、場合によってはログイン顧客 ID が必要です。

開発者トークン

デベロッパー トークンはクライアント センター(MCC)アカウントにリンクされており、Google 広告のウェブ インターフェースで確認できます。

開発者トークンは MCC アカウントにリンクされますが、そのアカウントへのアクセス権は付与されません。デベロッパー トークンは API へのアクセスを全般的に許可し、アカウント レベルのアクセスは OAuth 2.0 を通じて構成されます。

クライアント ライブラリでは、デベロッパー トークンは ads.properties ファイルの api.googleads.developerToken キーで指定します。

OAuth 2.0 認証情報

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

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

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

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

ログイン用お客様 ID

必要に応じて、サービング アカウントへのアクセスを提供するクライアント センター(MCC)アカウントの顧客 ID を指定します。MCC アカウントからクライアント アカウントにアクセスしている場合は、この値を指定する必要があります。お客様 ID へのパスで、すべてのクライアント センター(MCC)アカウントを指定する必要はありません。アクセス権限に使用している最上位の MCC 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=PRIVATE_KEY_JSON_FILE_PATH
api.googleads.developerToken=INSERT_DEVELOPER_TOKEN_HERE
# Only add this key if you are using impersonation to access an account
# other than the service account itself.
# api.googleads.serviceAccountUser=USER_EMAIL_TO_IMPERSONATE

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

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

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

  1. Google 広告 API を使用して管理するすべてのアカウントへのアクセス権を 1 人のユーザーに付与します。一般的なアプローチは、ユーザーに Google Ads API MCC アカウントを付与し、その MCC アカウントの下にすべての Google 広告アカウントをリンクすることです。
  2. ユーザーが gcloud などのコマンドライン ツールまたは 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
api.googleads.developerToken=INSERT_DEVELOPER_TOKEN_HERE

詳しくは、シングル ユーザー認証のワークフロー ガイドを参照してください。

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

アプリでユーザーがログインし、ユーザーの代わりに Google 広告アカウントを管理する権限をアプリに付与できるようにする場合、このワークフローをおすすめします。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
api.googleads.developerToken=INSERT_DEVELOPER_TOKEN_HERE

詳しくは、マルチユーザー認証のワークフロー ガイドを参照してください。

ユーザーが複数のアカウントを管理している場合はどうなりますか?

ユーザーがアカウントに直接アクセスするか、Google 広告クライアント センター(MCC)アカウントを介して、複数の Google 広告アカウントを管理することは一般的です。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 に設定します。アプリケーションのデフォルト認証情報を使用する場合は、クライアント ID、クライアント シークレット、更新トークンを設定しないでください。