認証と認可

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

Google 広告のアクセスモデルについて

Google Ads API を効果的に使用するには、Google 広告のアクセスモデルの仕組みを理解する必要があります。Google 広告のアクセスモデル ガイドを読むことを強くおすすめします。

OAuth ワークフロー

Google Ads API を使用する際に使用される一般的なワークフローは 3 つあります。

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

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


// Initialize a GoogleAdsConfig class.
GoogleAdsConfig config = new GoogleAdsConfig()
{
    DeveloperToken = "******",
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
    OAuth2SecretsJsonPath = "PATH_TO_CREDENTIALS_JSON",
    LoginCustomerId = ******
};

// Initialize a GoogleAdsClient class.
GoogleAdsClient client = new GoogleAdsClient(config);

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

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

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

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

ライブラリは、ユーザーの OAuth 2.0 認証情報を使用して次のように初期化できます。

GoogleAdsConfig googleAdsConfig = new GoogleAdsConfig()
{
    DeveloperToken = DEVELOPER_TOKEN,
    LoginCustomerId = LOGIN_CUSTOMER_ID,
    OAuth2ClientId = OAUTH_CLIENT_ID,
    OAuth2ClientSecret = OAUTH_CLIENT_SECRET,
    OAuth2RefreshToken = REFRESH_TOKEN,
};

GoogleAdsClient googleAdsClient = new GoogleAdsClient(googleAdsConfig);

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

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

アプリでユーザーがログインし、アプリがユーザーの代わりに Google 広告アカウントを管理することを承認できるようにする場合は、このワークフローをおすすめします。アプリは OAuth 2.0 ユーザー認証情報をビルドして管理します。ライブラリは、次のようにユーザーの認証情報を使用して初期化できます。

GoogleAdsConfig googleAdsConfig = new GoogleAdsConfig()
{
    DeveloperToken = DEVELOPER_TOKEN,
    LoginCustomerId = LOGIN_CUSTOMER_ID,
    OAuth2ClientId = OAUTH_CLIENT_ID,
    OAuth2ClientSecret = OAUTH_CLIENT_SECRET,
    OAuth2RefreshToken = REFRESH_TOKEN,
};

GoogleAdsClient googleAdsClient = new GoogleAdsClient(googleAdsConfig);

詳しくは、マルチユーザー認証のワークフロー ガイドを参照してください。.NET クライアント ライブラリには、参照用の 2 つのコード例が含まれています。

  1. AuthenticateInAspNetCoreApplication コード例は、実行時にユーザー認証を取得して、ユーザーに代わって Google 広告アカウントを管理するウェブアプリを構築する方法を示しています。アプリはユーザーの OAuth 2.0 認証情報を使用して、Google 広告アカウントのキャンペーンを取得します。

  2. GenerateUserCredentials は、ユーザーに代わって Google 広告アカウントを管理するために、実行時にユーザー認証を取得する方法を示すコマンドライン コードの例です。このコード例を参考に、ユーザー認証を必要とするデスクトップ アプリを構築できます。

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

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

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

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

.NET クライアント ライブラリは、アプリケーションのデフォルト認証情報を使用した認証もサポートしています。

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

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

アプリケーションのデフォルト認証情報を使用するには、GoogleAdsConfigUseApplicationDefaultCredentials オプションを true に設定します。これは、クライアント ライブラリで他の構成プロパティを設定するのと同じ方法で行うことができます。つまり、コード内、構成ファイル内、または環境変数を使用します。

.NET クライアント ライブラリを構成するために使用できるオプションの詳細については、構成のページをご覧ください。