구성

Google Ads API 클라이언트 라이브러리는 라이브러리 동작을 맞춤설정하는 데 사용할 수 있는 몇 가지 구성 설정을 제공합니다.

런타임에 라이브러리 구성

클라이언트 라이브러리를 구성할 때 선호되는 방법은 런타임 시 GoogleAdsConfig 객체를 초기화하는 것입니다.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    DeveloperToken = "******",
    OAuth2Mode = "APPLICATION",
    OAuth2ClientId = "******.apps.googleusercontent.com",
    OAuth2ClientSecret = "******",
    OAuth2RefreshToken = "******"
};

GoogleAdsClient client = new GoogleAdsClient(config);

대체 구성 옵션

또한 클라이언트 라이브러리를 구성하는 몇 가지 추가 옵션이 제공됩니다. 이를 사용 설정하려면 프로젝트의 Google.Ads.GoogleAds.Extensions 패키지에 Nuget 참조를 추가합니다.

이러한 옵션 중 하나를 사용하면 구성 설정이 자동으로 선택되지 않으므로 아래와 같이 명시적으로 로드해야 합니다.

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 파일에서 구성 설정을 로드하려면 GoogleAdsConfig 객체의 LoadFromDefaultAppConfigSection 메서드를 호출합니다.

GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromDefaultAppConfigSection();
GoogleAdsClient client = new GoogleAdsClient(config);

별도의 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단계: csproj에서 빌드 규칙 수정

마지막으로 프로젝트에 새 구성 파일을 포함합니다. 이 파일의 속성을 Always copy to output folder로 변경합니다.

이제 프로젝트를 빌드하고 실행합니다. 애플리케이션이 새 구성 파일에서 값을 가져오기 시작합니다.

커스텀 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();
config.LoadFromConfigurationRoot(configRoot);
GoogleAdsClient client = new GoogleAdsClient(config);

settings.json을 사용한 구성

이 프로세스는 커스텀 JSON을 사용하는 것과 비슷하지만 키가 GoogleAdsApi라는 섹션에 있어야 합니다.

{
    "GoogleAdsApi":
    {
        "DeveloperToken": "******",
        "OAuth2Mode": "APPLICATION",
        "OAuth2ClientId": "******.apps.googleusercontent.com",
        "OAuth2ClientSecret": "******",
        "OAuth2RefreshToken": "******",
        ...
    }
    // More settings...
}

그런 다음 페이지에서 IConfiguration 인스턴스를 사용할 수 있습니다.

IConfigurationSection section = Configuration.GetSection("GoogleAdsApi");
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromConfigurationSection(section);
GoogleAdsClient client = new GoogleAdsClient(config);

환경 변수를 사용한 구성

환경 변수를 사용하여 GoogleAdsClient를 초기화할 수도 있습니다.

GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromEnvironmentVariables();
GoogleAdsClient client = new GoogleAdsClient(config);

지원되는 환경 변수의 전체 목록을 참조하세요.

구성 필드

Google Ads .NET 라이브러리에서 지원되는 설정 목록은 다음과 같습니다.

연결 설정

  • Timeout: 이 키를 사용하여 서비스 제한 시간을 밀리초 단위로 설정합니다. 기본값은 googleads_grpc_service_config.jsonmethod_config/timeout 설정에 따라 설정됩니다. API 호출 최대 시간에 더 짧은 제한을 적용해야 하는 경우 더 낮은 값을 설정합니다. 제한 시간을 2시간 이상으로 설정할 수 있지만 API가 여전히 매우 오래 실행되는 요청의 제한 시간을 초과하고 DEADLINE_EXCEEDED 오류를 반환할 수 있습니다.
  • ProxyServer: 프록시를 사용하여 인터넷에 연결하는 경우 HTTP 프록시 서버 URL로 설정합니다.
  • ProxyUser: 프록시 서버에 인증하는 데 필요한 사용자 이름으로 설정합니다. 사용자 이름이 필요하지 않은 경우에는 비워 둡니다.
  • ProxyPassword: ProxyUser 값을 설정하는 경우 ProxyUser의 비밀번호로 설정합니다.
  • ProxyDomain: 프록시 서버에 설정해야 하는 경우 ProxyUser의 도메인으로 설정합니다.
  • MaxReceiveMessageLengthInBytes: 클라이언트 라이브러리가 처리할 수 있는 API 응답의 최대 크기를 늘리려면 이 설정을 사용합니다. 기본값은 64MB입니다.
  • MaxMetadataSizeInBytes: 클라이언트 라이브러리가 처리할 수 있는 API 오류 응답의 최대 크기를 늘리려면 이 설정을 사용합니다. 기본값은 16MB입니다.

MaxReceiveMessageLengthInBytesMaxMetadataSizeInBytes 설정을 조정하여 특정 ResourceExhausted 오류를 수정합니다. 이 설정은 Status(StatusCode="ResourceExhausted",Detail="Received message larger than max (423184132 versus 67108864)" 형식의 오류를 해결합니다.

이 예에서는 메시지 크기 (423184132 bytes)가 라이브러리가 처리할 수 있는 크기 (67108864 bytes)보다 크기 때문에 오류가 발생합니다. 이 오류를 방지하려면 MaxReceiveMessageLengthInBytes500000000로 늘리세요.

이 오류는 코드가 매우 큰 응답 객체 (예: 큰 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로 설정합니다. 하이픈 (-) 없이 설정해야 합니다. 연결된 계정 자세히 알아보기