認証と承認

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

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

Google Ads API を効果的に使用するには、Google Ads のアクセスモデルの仕組みを理解する必要があります。Google 広告アクセスモデル ガイドを参照してください。

OAuth ワークフロー

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

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

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

ライブラリを次のように構成します。

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

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

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

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

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

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

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

GoogleAdsConfig config = new GoogleAdsConfig()
{
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
    OAuth2ClientId = "INSERT_OAUTH_CLIENT_ID_HERE",
    OAuth2ClientSecret = "INSERT_OAUTH_CLIENT_SECRET_HERE",
    OAuth2RefreshToken = "INSERT_REFRESH_TOKEN_HERE"
};

GoogleAdsClient client = new GoogleAdsClient(config);

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

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

アプリでユーザーがログインし、アプリがユーザーの代わりに Google 広告アカウントを管理することを承認できるようにする場合は、このワークフローをおすすめします。アプリは、ユーザー セッションまたはリクエストごとに OAuth 2.0 ユーザー認証情報を動的に構築して管理し、アクティブなユーザーの更新トークンを使用して GoogleAdsClient を初期化します。

GoogleAdsConfig config = new GoogleAdsConfig()
{
    LoginCustomerId = userSession.LoginCustomerId,
    OAuth2ClientId = "INSERT_OAUTH_CLIENT_ID_HERE",
    OAuth2ClientSecret = "INSERT_OAUTH_CLIENT_SECRET_HERE",
    OAuth2RefreshToken = userSession.RefreshToken
};

GoogleAdsClient client = new GoogleAdsClient(config);

Google.Ads.GoogleAds v27.0.0 以降では、Credentials プロパティを使用して、事前構成済みの ICredential オブジェクトまたは GoogleCredential オブジェクトを GoogleAdsConfig に直接挿入することもできます。

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

  1. AuthenticateInAspNetCoreApplication コード例は、実行時にユーザー認証を取得して、ユーザーに代わって Google 広告アカウントを管理するウェブアプリを構築する方法を示しています。アプリは、ユーザーの OAuth 2.0 認証情報を使用して、Google 広告アカウントのキャンペーンを取得します。
  2. GenerateUserCredentials コマンドライン コードの例は、ユーザーの代わりに Google 広告アカウントを管理するために、実行時にユーザー認証を取得する方法を示しています。このコード例は、ユーザー認証を必要とするデスクトップ アプリを構築する際の参考として使用できます。

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

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

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

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

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

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

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

アプリケーションのデフォルト認証情報を使用するには、GoogleAdsConfig で UseApplicationDefaultCredentials オプションを true に設定します(または、config.LoadFromEnvironmentVariables() で構成を読み込むときに USE_APPLICATION_DEFAULT_CREDENTIALS=true 環境変数を設定します)。

GoogleAdsConfig config = new GoogleAdsConfig()
{
    UseApplicationDefaultCredentials = true,
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};
GoogleAdsClient client = new GoogleAdsClient(config);

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