멀티 사용자 인증 워크플로

멀티 사용자 인증 워크플로에서는 자체 OAuth 흐름을 빌드하여 사용자를 인증합니다. Google 아이덴티티 문서에는 여러 앱 유형과 각 앱 유형을 지원하는 데 필요한 Google Cloud 콘솔 프로젝트 구성이 설명되어 있습니다. 이러한 모든 앱 유형은 Google Ads API에서 지원됩니다. 추가로 고려해야 할 기술 세부정보는 다음과 같습니다.

  1. 다음 OAuth 2.0 범위를 요청하도록 애플리케이션을 구성합니다.

    https://www.googleapis.com/auth/adwords
    
  2. 사용자가 오프라인 상태일 때 앱이 사용자를 대신하여 API를 호출해야 할 수 있습니다. 일반적인 시나리오는 오프라인으로 계정 측정항목을 다운로드하여 보고서를 생성하고 계정 분석을 실행하는 것입니다. 따라서 OAuth 오프라인 액세스를 요청하는 것이 좋습니다.

  3. OAuth 앱 인증 절차를 완료하여 앱을 인증받으세요.

워크플로 개요

멀티 사용자 인증 워크플로를 구현하려면 다음 세 가지 주요 단계를 거쳐야 합니다.

  1. 사용자를 OAuth 동의 화면으로 안내: 각 사용자를 Google의 OAuth 2.0 승인 엔드포인트로 리디렉션하여 https://www.googleapis.com/auth/adwords 범위와 오프라인 액세스를 요청합니다.
  2. 승인 코드를 토큰으로 교환: 사용자가 권한을 부여한 후 반환된 승인 코드를 캡처하고 액세스 토큰 및 갱신 토큰으로 교환합니다.
  3. 런타임에 토큰 저장 및 클라이언트 초기화: 각 사용자의 갱신 토큰을 데이터 저장소에 안전하게 저장하고 런타임에 GoogleAdsClient 인스턴스를 초기화할 때 사용자의 사용자 인증 정보를 전달합니다.

클라이언트 라이브러리 구성

사용자를 승인하고 OAuth 2.0 사용자 인증 정보를 획득하면 프로그래밍 언어에 해당하는 탭의 안내에 따라 클라이언트 라이브러리를 구성할 수 있습니다.

자바

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"
}