구성

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

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.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로 설정합니다. 하이픈 (-) 없이 설정해야 합니다. 연결된 계정에 대해 자세히 알아보기