Google Ads API 클라이언트 라이브러리는 라이브러리 동작을 맞춤설정하는 데 사용할 수 있는 몇 가지 구성 설정을 제공합니다.
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=""/>
<!-- API-specific settings -->
<add key="DeveloperToken" value="******"/>
<!-- OAuth2 settings -->
<add key = "OAuth2Mode" value="APPLICATION"/>
<add key = "OAuth2ClientId" value = "******.apps.googleusercontent.com" />
<add key = "OAuth2ClientSecret" value = "******" />
<add key = "OAuth2RefreshToken" value = "******" />
</GoogleAdsApi>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
별도의 App.config 파일 지정
App.config
를 복잡하게 만들지 않으려면 configSource
속성을 사용하여 라이브러리별 구성을 자체 구성 파일로 이동하면 됩니다.
1단계: 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>
2단계: 구성 파일의 콘텐츠 지정
이제 configSource
에 지정한 이름으로 다른 구성 파일을 만들고 App.config
의 구성 노드를 이 파일로 이동합니다.
<?xml version="1.0" encoding="utf-8" ?>
<GoogleAdsApi>
... More settings.
</GoogleAdsApi>
3단계: csproto에서 빌드 규칙 수정
마지막으로 프로젝트에 새 구성 파일을 포함합니다. 이 파일의 속성을 항상 출력 폴더에 복사로 변경합니다.
이제 프로젝트를 빌드하고 실행합니다. 애플리케이션이 새 구성 파일에서 값을 선택합니다.
커스텀 JSON 파일을 사용한 구성
IConfigurationRoot
인스턴스를 사용하여 클라이언트 라이브러리를 구성할 수 있습니다.
JSON 파일 만들기
App.config
파일과 구조가 유사한 GoogleAdsApi.json
이라는 JSON 파일을 만듭니다.
{
"Timeout": "2000",
"ProxyServer": "http://localhost:8888",
"ProxyUser": "",
"ProxyPassword": "",
"ProxyDomain": "",
"DeveloperToken": "******",
"OAuth2Mode": "APPLICATION",
"OAuth2ClientId": "******.apps.googleusercontent.com",
"OAuth2ClientSecret": "******",
"OAuth2RefreshToken": "******",
}
구성 로드
그런 다음 JSON 파일을 IConfigurationRoot
에 로드합니다.
ConfigurationBuilder builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("GoogleAdsApi.json");
IConfigurationRoot configRoot = builder.Build();
GoogleAdsConfig config = new GoogleAdsConfig(configRoot);
GoogleAdsClient client = new GoogleAdsClient(config);
settings.json을 사용한 구성
이 키는 키가 GoogleAdsApi
섹션에 있어야 한다는 점을 제외하면 커스텀 JSON을 사용하는 것과 비슷합니다.
{
"GoogleAdsApi":
{
"DeveloperToken": "******",
"OAuth2Mode": "APPLICATION",
"OAuth2ClientId": "******.apps.googleusercontent.com",
"OAuth2ClientSecret": "******",
"OAuth2RefreshToken": "******",
...
}
// More settings...
}
그런 다음 페이지에서 IConfiguration
인스턴스를 사용할 수 있습니다.
IConfigurationSection section = Configuration.GetSection("GoogleAdsApi");
GoogleAdsConfig config = new GoogleAdsConfig(section);
GoogleAdsClient client = new GoogleAdsClient(config);
런타임 시 라이브러리 구성
런타임에 GoogleAdsClient
를 초기화할 수도 있습니다.
예시 1: 런타임 시 구성 초기화
GoogleAdsConfig config = new GoogleAdsConfig()
{
DeveloperToken = "******",
OAuth2Mode = "APPLICATION",
OAuth2ClientId = "******.apps.googleusercontent.com",
OAuth2ClientSecret = "******",
OAuth2RefreshToken = "******"
};
GoogleAdsClient client = new GoogleAdsClient(config);
예 2: App.config에서 로드하지만 설정 재정의
GoogleAdsClient client = new GoogleAdsClient(config);
client.Config.DeveloperToken = "******";
환경 변수를 사용하는 구성
환경 변수를 사용하여 GoogleAdsClient
를 초기화할 수도 있습니다. 이러한 설정은 자동으로 선택되지 않으며, 아래와 같이 환경 변수에서 설정을 로드해야 합니다.
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromEnvironmentVariables();
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 설정
OAuth2를 사용하여 Google Ads API 서버에 대한 호출을 승인할 때 다음 구성 키를 설정해야 합니다.
AuthorizationMethod
:OAuth2
로 설정합니다.OAuth2Mode
:APPLICATION
또는SERVICE_ACCOUNT
로 설정합니다.OAuth2ClientId
: 이 값을 OAuth2 클라이언트 ID로 설정합니다.OAuth2ClientSecret
: 이 값을 OAuth2 클라이언트 보안 비밀로 설정합니다.OAuth2Scope
: 여러 API에 OAuth2 토큰을 승인하려면 이 값을 다른 범위로 설정합니다. 이 설정은 선택사항입니다.
OAuth2Mode == APPLICATION
를 사용하는 경우 다음과 같은 추가 구성 키를 설정해야 합니다.
OAuth2RefreshToken
: OAuth2 토큰을 재사용하려면 사전 생성된 OAuth2 갱신 토큰으로 이 값을 설정합니다. 이 설정은 선택사항입니다.OAuth2RedirectUri
: 이 값을 OAuth2 리디렉션 URL로 설정합니다. 이 설정은 선택사항입니다.
자세한 내용은 다음 가이드를 참고하세요.
OAuth2Mode == SERVICE_ACCOUNT
를 사용하는 경우 다음과 같은 추가 구성 키를 설정해야 합니다.
OAuth2PrnEmail
: 이 값을 가장하려는 계정의 이메일 주소로 설정합니다.OAuth2SecretsJsonPath
: 이 값을 OAuth2 JSON 구성 파일 경로로 설정합니다.
자세한 내용은 OAuth 서비스 계정 흐름 가이드를 참고하세요.
교통 설정
UseGrpcCore
:Grpc.Core
라이브러리를 기본 전송 레이어로 사용하려면 이 설정을true
로 설정합니다. 자세한 내용은 gRPC 지원 가이드를 참고하세요.
Google Ads API 설정
다음 설정은 Google Ads API에만 적용됩니다.
DeveloperToken
: 개발자 토큰으로 설정합니다.LoginCustomerId
: 하이픈 (-
) 없이 요청에서 사용하도록 승인된 고객의 고객 ID입니다.LinkedCustomerId
: 이 헤더는 Google Ads UI (Google Ads API의AccountLink
리소스)에서 연결된 계정을 통해 권한이 부여될 때 항목의 리소스를 업데이트하는 메서드에만 필요합니다. 이 값을 지정된 고객 ID의 리소스를 업데이트하는 데이터 제공업체의 고객 ID로 설정합니다. 하이픈 (-
) 없이 설정해야 합니다. 연결된 계정에 대해 자세히 알아보기