マルチユーザー認証のワークフロー

マルチユーザー認証ワークフローでは、独自の OAuth フローを構築してユーザーを認証します。Google Identity のドキュメントでは、複数のアプリタイプと、各アプリタイプをサポートするために必要な Google Cloud コンソール プロジェクトの構成について説明しています。これらのアプリタイプはすべて Google Ads API でサポートされています。その他の技術的な留意点は次のとおりです。

  1. 次の OAuth 2.0 スコープをリクエストするようにアプリケーションを構成します。

    https://www.googleapis.com/auth/adwords
    
  2. アプリは、ユーザーがオフラインの間にユーザーに代わって API 呼び出しを行う必要がある場合があります。一般的なシナリオは、アカウントの指標をオフラインでダウンロードしてレポートを生成し、アカウントの分析を行うことです。そのため、OAuth オフライン アクセスをリクエストすることをおすすめします。

  3. アプリの認証を受けるには、OAuth アプリの確認プロセスを完了します。

ワークフローの概要

マルチユーザー認証ワークフローの実装には、主に次の 3 つのステップがあります。

  1. ユーザーを OAuth 同意画面に誘導する: 各ユーザーを Google の OAuth 2.0 認証エンドポイントにリダイレクトし、https://www.googleapis.com/auth/adwords スコープとオフライン アクセスをリクエストします。
  2. 認証コードをトークンと交換する: ユーザーが権限を付与したら、返された認証コードを取得し、アクセス トークンと更新トークンと交換します。
  3. 実行時にトークンを保存してクライアントを初期化する: 各ユーザーの更新トークンをデータストアに安全に保存し、実行時に GoogleAdsClient インスタンスを初期化するときにユーザーの認証情報を渡します。

クライアント ライブラリの構成

ユーザーを承認して OAuth 2.0 認証情報を取得したら、プログラミング言語に対応するタブの手順に沿ってクライアント ライブラリを構成できます。

Java

API 呼び出しを行うアカウントのユーザーから取得した認証情報を使用して、実行時に GoogleAdsClient インスタンスを初期化できます。

UserCredentials credentials =
    UserCredentials.newBuilder()
        .setClientId("INSERT_OAUTH2_CLIENT_ID_HERE")
        .setClientSecret("INSERT_OAUTH2_CLIENT_SECRET_HERE")
        .setRefreshToken("INSERT_OAUTH2_REFRESH_TOKEN_HERE")
        .build();

// Creates a GoogleAdsClient with the provided credentials.
GoogleAdsClient client =
    GoogleAdsClient.newBuilder()
        // Sets the OAuth credentials which provide Google Ads account
        // access.
        .setCredentials(credentials)
        // Optional: sets the login customer ID.
        .setLoginCustomerId(Long.valueOf("INSERT_LOGIN_CUSTOMER_ID_HERE"))
        .build();

その他のオプションについては、構成ガイドをご覧ください。

.NET

API 呼び出しを行うアカウントのユーザーから取得した認証情報を使用して、実行時に GoogleAdsClient インスタンスを初期化できます。

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID_HERE",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
};

GoogleAdsClient client = new GoogleAdsClient(config);

その他のオプションについては、構成ガイドをご覧ください。

Python

API 呼び出しを行うアカウントのユーザーから取得した認証情報を使用して、実行時に GoogleAdsClient インスタンスを初期化できます。

from google.ads.googleads.client import GoogleAdsClient

credentials = {
    "login_customer_id": "INSERT_LOGIN_CUSTOMER_ID_HERE",
    "refresh_token": "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
    "client_id": "INSERT_OAUTH2_CLIENT_ID_HERE",
    "client_secret": "INSERT_OAUTH2_CLIENT_SECRET_HERE",
    "use_proto_plus": True,
}

client = GoogleAdsClient.load_from_dict(credentials)

その他のオプションについては、構成ガイドをご覧ください。

PHP

API 呼び出しを行うアカウントのユーザーから取得した認証情報を使用して、実行時に GoogleAdsClient インスタンスを初期化できます。

$oAuth2Credential = (new OAuth2TokenBuilder())
    ->withClientId('INSERT_OAUTH2_CLIENT_ID_HERE')
    ->withClientSecret('INSERT_OAUTH2_CLIENT_SECRET_HERE')
    ->withRefreshToken('INSERT_OAUTH2_REFRESH_TOKEN_HERE')
    ->build();

$googleAdsClient = (new GoogleAdsClientBuilder())
    ->withOAuth2Credential($oAuth2Credential)
    ->withLoginCustomerId('INSERT_LOGIN_CUSTOMER_ID_HERE')
    ->build();

その他のオプションについては、構成ガイドをご覧ください。

Ruby

API 呼び出しを行うアカウントのユーザーから取得した認証情報を使用して、実行時に GoogleAdsClient インスタンスを初期化できます。

client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
  config.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
  config.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
  config.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
  config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end

その他のオプションについては、構成ガイドをご覧ください。

Perl

API 呼び出しを行うアカウントのユーザーから取得した認証情報を使用して、実行時に GoogleAdsClient インスタンスを初期化できます。

my $api_client = Google::Ads::GoogleAds::Client->new({
  login_customer_id => "INSERT_LOGIN_CUSTOMER_ID_HERE"
});

my $oauth2_handler = $api_client->get_oauth2_applications_handler();
$oauth2_handler->set_client_id("INSERT_OAUTH2_CLIENT_ID_HERE");
$oauth2_handler->set_client_secret("INSERT_OAUTH2_CLIENT_SECRET_HERE");
$oauth2_handler->set_refresh_token("INSERT_OAUTH2_REFRESH_TOKEN_HERE");

その他のオプションについては、構成ガイドをご覧ください。

curl

まず、HTTP クライアントを使用して OAuth 2.0 アクセス トークンを取得します。このガイドでは、curl コマンドを使用します。

curl \
  --data "grant_type=refresh_token" \
  --data "client_id=CLIENT_ID" \
  --data "client_secret=CLIENT_SECRET" \
  --data "refresh_token=REFRESH_TOKEN" \
  https://oauth2.googleapis.com/token

API 呼び出しでアクセス トークンを使用できます。次の例は、GoogleAdsService.SearchStream メソッドを使用してアカウント内のキャンペーンを取得し、キャンペーン レポートを実行する方法を示しています。このガイドでは、レポートの詳細については説明しません。

curl -i -X POST \
  https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "login-customer-id: LOGIN_CUSTOMER_ID" \
  --data-binary "@query.json"

query.json の内容は次のとおりです。

{
  "query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}