Google Ads API 클라이언트 라이브러리는 라이브러리 동작을 맞춤설정하는 데 사용할 수 있는 여러 구성 설정을 제공합니다.
런타임에 라이브러리 구성
클라이언트 라이브러리를 구성하는 기본 방법은 런타임에 GoogleAdsConfig 객체를 초기화하는 것입니다.
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.APPLICATION,
OAuth2ClientId = "INSERT_CLIENT_ID.apps.googleusercontent.com",
OAuth2ClientSecret = "INSERT_CLIENT_SECRET",
OAuth2RefreshToken = "INSERT_REFRESH_TOKEN"
};
GoogleAdsClient client = new GoogleAdsClient(config);
대체 구성 옵션
이 라이브러리는 구성 설정을 로드하는 추가 옵션도 제공합니다. 이를 사용 설정하려면 프로젝트에서 Google.Ads.GoogleAds.Extensions 패키지에 NuGet 참조를 추가하세요.
이러한 옵션 중 하나를 사용하는 경우 구성 설정이 자동으로 선택되지 않습니다. 다음 섹션에 표시된 대로 명시적으로 로드해야 합니다. 외부 파일이나 스트림에서 설정을 로드할 때 파일 I/O 예외 (예: FileNotFoundException 또는 UnauthorizedAccessException)를 처리해야 합니다.
App.config 사용
Google Ads API와 관련된 모든 설정은 App.config 파일의 GoogleAdsApi 노드에 저장됩니다. 일반적인 구성 App.config은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="GoogleAdsApi"
type="System.Configuration.DictionarySectionHandler" />
</configSections>
<GoogleAdsApi>
<!-- Set the service timeout in milliseconds. -->
<add key="Timeout" value="2000" />
<!-- Proxy settings for library. -->
<add key="ProxyServer" value="http://localhost:8888" />
<add key="ProxyUser" value="" />
<add key="ProxyPassword" value="" />
<add key="ProxyDomain" value="" />
<!-- OAuth2 settings -->
<add key="OAuth2Mode" value="APPLICATION" />
<add key="OAuth2ClientId"
value="INSERT_CLIENT_ID.apps.googleusercontent.com" />
<add key="OAuth2ClientSecret" value="INSERT_CLIENT_SECRET" />
<add key="OAuth2RefreshToken" value="INSERT_REFRESH_TOKEN" />
</GoogleAdsApi>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
App.config 파일에서 구성 설정을 로드하려면 GoogleAdsConfig 객체에서 LoadFromDefaultAppConfigSection 메서드를 호출합니다.
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromDefaultAppConfigSection();
GoogleAdsClient client = new GoogleAdsClient(config);
별도의 App.config 파일 지정
App.config이 복잡해지는 것을 원하지 않는 경우 configSource 속성을 사용하여 라이브러리별 구성을 자체 구성 파일로 이동할 수 있습니다.
App.config에서configSource을 지정합니다. 외부 구성 파일을 참조하도록App.config를 수정합니다.<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="GoogleAdsApi" type="System.Configuration.DictionarySectionHandler" /> </configSections> <GoogleAdsApi configSource="GoogleAdsApi.config" /> </configuration>구성 파일의 콘텐츠를 지정합니다.
configSource(GoogleAdsApi.config)에 지정한 이름으로 다른 구성 파일을 만들고App.config에서GoogleAdsApi구성 노드를 이 파일로 이동합니다.<?xml version="1.0" encoding="utf-8" ?> <GoogleAdsApi> <!-- More settings. --> </GoogleAdsApi>.csproj에서 빌드 규칙을 업데이트합니다. 새 구성 파일을 프로젝트에 포함하고 출력 디렉터리로 복사 속성을 항상 복사로 설정합니다. 애플리케이션이 새 구성 파일에서 값을 가져오도록 프로젝트를 다시 빌드하고 실행합니다.
맞춤 JSON 파일 사용
IConfigurationRoot 인스턴스를 사용하여 클라이언트 라이브러리를 구성할 수 있습니다.
JSON 파일 만들기
App.config 파일과 유사한 구조를 갖는 GoogleAdsApi.json이라는 JSON 파일을 만듭니다.
{
"Timeout": "2000",
"ProxyServer": "http://localhost:8888",
"ProxyUser": "",
"ProxyPassword": "",
"ProxyDomain": "",
"OAuth2Mode": "APPLICATION",
"OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
"OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
"OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
}
구성 로드
그런 다음 JSON 파일을 IConfigurationRoot에 로드합니다.
ConfigurationBuilder builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("GoogleAdsApi.json");
IConfigurationRoot configRoot = builder.Build();
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromConfigurationRoot(configRoot);
GoogleAdsClient client = new GoogleAdsClient(config);
settings.json 사용
여기서의 프로세스는 커스텀 JSON 파일을 사용하는 것과 유사하지만 키는 GoogleAdsApi이라는 섹션 내에 있어야 합니다.
{
"GoogleAdsApi": {
"OAuth2Mode": "APPLICATION",
"OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
"OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
"OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
}
}
그런 다음 애플리케이션의 IConfiguration 인스턴스에서 GoogleAdsApi 섹션을 추출합니다 (예: ASP.NET Core에 의해 삽입되거나 ConfigurationBuilder로 빌드됨).
IConfigurationSection section = configuration.GetSection("GoogleAdsApi");
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromConfigurationSection(section);
GoogleAdsClient client = new GoogleAdsClient(config);
또는 config.LoadFromSettingsJson(filePath, "GoogleAdsApi")을 사용하여 경로로 직접 settings.json 파일을 로드하거나 config.TryLoadFromEnvironmentFilePath을 사용하여 GOOGLE_ADS_CONFIGURATION_FILE_PATH 환경 변수(EnvironmentVariableNames.CONFIG_FILE_PATH)에서 로드할 수 있습니다.
환경 변수 사용
환경 변수를 사용하여 GoogleAdsClient를 초기화할 수도 있습니다.
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromEnvironmentVariables();
GoogleAdsClient client = new GoogleAdsClient(config);
지원되는 환경 변수의 전체 목록을 참고하세요.
일반 스트림 사용
암호화된 스트림을 포함한 일반 스트림에서 구성 또는 구성의 일부를 로드할 수도 있습니다.
GoogleAdsConfig config = new GoogleAdsConfig()
{
// Set some configuration properties in code.
OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
};
// Load your encrypted data from a file and dispose of the streams properly.
using (CryptoStream strm = GetEncryptedCredentialsStream())
using (StreamReader rdr = new StreamReader(strm))
{
// Configure the OAuth credentials from the encrypted stream.
config.LoadOAuth2SecretsFromStream(rdr);
}
GoogleAdsClient client = new GoogleAdsClient(config);
구성 필드
다음 섹션에는 Google Ads .NET 라이브러리에서 지원하는 설정이 나열되어 있습니다.
연결 설정
Timeout: 이 키를 사용하여 서비스 제한 시간을 밀리초 단위로 설정합니다. 기본값은googleads_grpc_service_config.json의method_config/timeout설정에 따라 설정됩니다. API 호출의 최대 시간에 더 짧은 제한을 적용해야 하는 경우 더 낮은 값을 설정합니다. 제한 시간을 2시간 이상으로 설정할 수 있지만 API는 여전히 매우 오래 실행되는 요청의 제한 시간을 초과하고DEADLINE_EXCEEDED오류를 반환할 수 있습니다.ProxyServer: 인터넷에 연결하는 데 프록시를 사용하는 경우 HTTP 프록시 서버 URL로 설정합니다.ProxyUser: 프록시 서버에 대해 인증하는 데 필요한 사용자 이름으로 설정합니다. 사용자 이름이 필요하지 않은 경우 비워 둡니다.ProxyPassword:ProxyUser값을 설정한 경우ProxyUser의 비밀번호로 설정합니다.ProxyDomain: 프록시 서버에 설정이 필요한 경우ProxyUser의 도메인으로 설정합니다.MaxReceiveMessageLengthInBytes: 클라이언트 라이브러리에서 처리할 수 있는 API 응답의 최대 크기를 늘리려면 이 설정을 사용하세요. 기본값은 64MB입니다.MaxMetadataSizeInBytes: 클라이언트 라이브러리에서 처리할 수 있는 API 오류 응답의 최대 크기를 늘리려면 이 설정을 사용하세요. 기본값은 16MB입니다.
MaxReceiveMessageLengthInBytes 및 MaxMetadataSizeInBytes 설정을 조정하여 특정 ResourceExhausted 오류를 수정합니다. 이러한 설정은 다음과 같은 형식의 오류를 해결합니다.
Status(StatusCode="ResourceExhausted",Detail="Received
message larger than max (423184132 versus 67108864)"
이 예에서는 메시지 크기 (423184132 bytes)가 라이브러리에서 처리할 수 있는 크기 (67108864 bytes)보다 커서 오류가 발생합니다. MaxReceiveMessageLengthInBytes를 500000000로 늘려 이 오류를 방지하세요. 이 오류는 코드가 매우 큰 응답 객체 (예: 큰 SearchGoogleAdsResponse)를 처리했음을 나타내기도 합니다. 이는 .NET의 대형 객체 힙으로 인해 코드의 성능에 영향을 미칠 수 있습니다. 이 문제가 성능 문제로 이어지면 API 호출을 재구성하거나 앱의 일부를 재설계하는 방법을 살펴봐야 할 수 있습니다.
OAuth2 설정
OAuth 2.0을 사용하여 Google Ads API 서버에 대한 호출을 승인하는 경우 다음 구성 키를 설정해야 합니다.
AuthorizationMethod:OAuth2로 설정합니다.OAuth2Mode:APPLICATION또는SERVICE_ACCOUNT로 설정합니다.OAuth2ClientId: 이 값을 OAuth 2.0 클라이언트 ID로 설정합니다.OAuth2ClientSecret: 이 값을 OAuth 2.0 클라이언트 보안 비밀번호로 설정합니다.OAuth2Scope: 여러 API에 대해 OAuth 2.0 토큰을 승인하려면 이 값을 다른 범위로 설정합니다. 이 설정은 선택사항입니다.UseApplicationDefaultCredentials: 애플리케이션 기본 사용자 인증 정보를 사용하여 인증하려면 이 값을true로 설정합니다 (Google.Ads.GoogleAdsv24.1.0이상에서 지원됨.config.LoadFromEnvironmentVariables()은 접두사가 없는USE_APPLICATION_DEFAULT_CREDENTIALS환경 변수를 읽음).Credentials: (런타임 전용,v27.0.0이상에서 지원) 런타임에 미리 구성된ICredential또는GoogleCredential인스턴스를GoogleAdsConfig에 직접 삽입합니다.
OAuth2Mode == APPLICATION을 사용하는 경우 다음 추가 구성 키를 설정해야 합니다.
OAuth2RefreshToken: OAuth 2.0 토큰을 재사용하려면 이 값을 미리 생성된 OAuth 2.0 갱신 토큰으로 설정합니다. 이 설정은 선택사항입니다.OAuth2RedirectUri: 이 값을 OAuth 2.0 리디렉션 URL로 설정합니다. 이 설정은 선택사항입니다.
자세한 내용은 다음 가이드를 참고하세요.
OAuth2Mode == SERVICE_ACCOUNT를 사용하는 경우 다음 추가 구성 키를 설정해야 합니다.
OAuth2SecretsJsonPath: 이 값을 OAuth 2.0 JSON 키 파일의 경로로 설정합니다.OAuth2PrnEmail: Google Workspace 도메인 전체 위임을 사용할 때 가장하는 계정의 이메일 주소로 이 값을 설정합니다. 이 설정은 선택사항입니다.
자세한 내용은 OAuth 서비스 계정 흐름 가이드를 참고하세요.
운송 설정
UseGrpcCore:Grpc.Core라이브러리를 기본 전송 계층으로 사용하려면 이 설정을true로 설정합니다.Grpc.Core라이브러리 사용을 참고하세요.
Google Ads API 설정
다음 설정은 Google Ads API 전용입니다.
DeveloperToken:v27.3.0이상에서 선택사항(GOOGLE_ADS_DEVELOPER_TOKEN). 개발자 토큰은 2026년 9월 9일에 지원이 종료되었습니다. API 서버에서 액세스 수준은 클라이언트 라이브러리 버전과 관계없이 Google Cloud 프로젝트에 따라 결정되며 API 서버는developer-token헤더를 무시합니다 (향후 Google Ads API의 메이저 버전에서 거부될 때까지). 구성에서DeveloperToken를 생략하거나 삭제하려면 로컬 클라이언트 측DeveloperToken유효성 검사를 삭제한Google.Ads.GoogleAdsv27.3.0이상을 사용하세요 (이전 버전에서는 로컬 유효성 검사를 위해 비어 있지 않은DeveloperToken가 필요함).LoginCustomerId: 요청에서 사용할 승인된 고객의 ID입니다 (하이픈 제외,-).LinkedCustomerId: 이 헤더는 Google Ads UI의 연결된 계정을 통해 권한이 부여된 경우 엔티티의 리소스를 업데이트하는 메서드에만 필요합니다 (Google Ads API의AccountLink리소스). 이 값을 지정된 고객 ID의 리소스를 업데이트하는 데이터 제공업체의 고객 ID로 설정합니다. 하이픈 없이 설정해야 합니다 (-). 연결된 계정에 대해 자세히 알아보기