다중 사용자 인증 워크플로에서는 사용자를 인증하기 위해 자체 OAuth 흐름을 빌드합니다. Google ID 문서의 일부로 설명된 여러 앱 유형과 해당 앱 유형을 지원하는 데 필요한 Google Cloud Console 프로젝트 구성이 있습니다. 이러한 모든 앱 유형은 Google Ads API에서 지원됩니다. 다음은 추가로 고려해야 할 기술 세부정보입니다.
Google Ads API에 액세스하려면 다음 범위에 대해 인증하도록 애플리케이션을 구성해야 합니다.
https://www.googleapis.com/auth/adwords
사용자가 오프라인 상태일 때 앱이 사용자를 대신하여 API를 호출해야 할 수 있습니다. 일반적인 시나리오는 오프라인으로 계정 측정항목을 다운로드하여 보고서를 생성하고 계정 분석을 실행하는 것입니다. 따라서 OAuth 오프라인 액세스를 요청하는 것이 좋습니다.
OAuth 앱 인증 절차를 거쳐 앱을 인증해야 합니다.
클라이언트 라이브러리 구성
사용자를 승인하고 OAuth 2.0 사용자 인증 정보를 획득하면 프로그래밍 언어에 해당하는 탭의 안내에 따라 클라이언트 라이브러리를 구성할 수 있습니다.
자바
API 호출을 실행할 계정의 사용자로부터 획득한 사용자 인증 정보를 사용하여 런타임에 GoogleAdsClient
인스턴스를 초기화할 수 있습니다.
UserCredentials credentials =
UserCredentials.newBuilder()
.setClientId(OAUTH_CLIENT_ID)
.setClientSecret(OAUTH_CLIENT_SECRET)
.setRefreshToken(REFRESH_TOKEN)
.build();
// Creates a GoogleAdsClient with the provided credentials.
GoogleAdsClient client =
GoogleAdsClient.newBuilder()
// Sets the developer token which enables API access.
.setDeveloperToken(DEVELOPER_TOKEN)
// Sets the OAuth credentials which provide Google Ads account access.
.setCredentials(credentials)
// Optional: sets the login customer ID.
.setLoginCustomerId(Long.valueOf(LOGIN_CUSTOMER_ID))
.build();
``` See the [configuration guide][java-config-guide] for additional options.
.NET
API 호출을 실행할 계정의 사용자로부터 획득한 사용자 인증 정보를 사용하여 런타임에 GoogleAdsClient
인스턴스를 초기화할 수 있습니다.
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);
추가 옵션은 구성 가이드를 참고하세요.
Python
API 호출을 실행할 계정의 사용자로부터 획득한 사용자 인증 정보를 사용하여 런타임에 GoogleAdsClient
인스턴스를 초기화할 수 있습니다.
from google.ads.googleads.client import GoogleAdsClient
credentials = {
"developer_token": "INSERT_DEVELOPER_TOKEN_HERE",
"login_customer_id": "INSERT_LOGIN_CUSTOMER_ID_HERE",
"refresh_token": "REFRESH_TOKEN",
"client_id": "OAUTH_CLIENT_ID",
"client_secret": "OAUTH_CLIENT_SECRET"}
client = GoogleAdsClient.load_from_dict(credentials)
추가 옵션은 구성 가이드를 참고하세요.
PHP
API 호출을 실행할 계정의 사용자로부터 획득한 사용자 인증 정보를 사용하여 런타임에 GoogleAdsClient
인스턴스를 초기화할 수 있습니다.
$oAuth2Credential = (new OAuth2TokenBuilder())
->withClientId('INSERT_CLIENT_ID_HERE')
->withClientSecret('INSERT_CLIENT_SECRET_HERE')
->withRefreshToken('INSERT_REFRESH_TOKEN_HERE')
->build();
$googleAdsClient = (new GoogleAdsClientBuilder())
->withOAuth2Credential($oAuth2Credential)
->withDeveloperToken('INSERT_DEVELOPER_TOKEN_HERE')
->withLoginCustomerId('INSERT_LOGIN_CUSTOMER_ID_HERE')
->build();
추가 옵션은 구성 가이드를 참고하세요.
Ruby
API 호출을 실행할 계정의 사용자로부터 획득한 사용자 인증 정보를 사용하여 런타임에 GoogleAdsClient
인스턴스를 초기화할 수 있습니다.
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
config.client_id = 'INSERT_CLIENT_ID_HERE'
config.client_secret = 'INSERT_CLIENT_SECRET_HERE'
config.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
config.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
end
추가 옵션은 구성 가이드를 참고하세요.
Perl
API 호출을 실행할 계정의 사용자로부터 획득한 사용자 인증 정보를 사용하여 런타임에 GoogleAdsClient
인스턴스를 초기화할 수 있습니다.
my $api_client = Google::Ads::GoogleAds::Client->new({
developer_token => "INSERT_DEVELOPER_TOKEN_HERE",
login_customer_id => "INSERT_LOGIN_CUSTOMER_ID_HERE"
});
my $oauth2_applications_handler = $api_client->get_oauth2_applications_handler();
$oauth2_applications_handler->set_client_id("INSERT_CLIENT_ID");
$oauth2_applications_handler->set_client_secret("INSERT_CLIENT_SECRET");
$oauth2_applications_handler->set_refresh_token("INSERT_REFRESH_TOKEN");
추가 옵션은 구성 가이드를 참고하세요.
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://www.googleapis.com/oauth2/v3/token
이제 API 호출에서 액세스 토큰을 사용할 수 있습니다. 다음 예에서는 GoogleAdsService.SearchStream
메서드를 사용하여 계정의 캠페인을 가져오는 캠페인 보고서를 실행하는 방법을 보여줍니다. 이 가이드에서는 보고에 관한 세부정보를 다루지 않습니다.
curl -i -X POST https://googleads.googleapis.com/v21/customers/CUSTOMER_ID/googleAds:searchStream \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "developer-token: DEVELOPER_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"
}