Configuração

A biblioteca de cliente da API Google Ads oferece várias configurações que podem ser usadas para personalizar o comportamento da biblioteca.

Configurar a biblioteca no tempo de execução

A maneira preferida de configurar a biblioteca de cliente é inicializar um objeto GoogleAdsConfig no tempo de execução:

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);

Opções de configuração alternativas

A biblioteca também oferece outras opções para carregar configurações. Para ativá-los, adicione uma referência do NuGet ao pacote Google.Ads.GoogleAds.Extensions no seu projeto.

Se você usar uma dessas opções, as configurações não serão coletadas automaticamente. É preciso carregá-las explicitamente, conforme mostrado nas seções a seguir. Não se esqueça de processar exceções de E/S de arquivo (como FileNotFoundException ou UnauthorizedAccessException) ao carregar configurações de arquivos ou fluxos externos.

Usar App.config

Todas as configurações específicas da API Google Ads são armazenadas no nó GoogleAdsApi do arquivo App.config. Uma configuração típica App.config é assim:

<?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>

Para carregar as configurações de um arquivo App.config, chame o método LoadFromDefaultAppConfigSection em um objeto GoogleAdsConfig:

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

Especificar um arquivo App.config separado

Se você não quiser que seu App.config fique desordenado, mova a configuração específica da biblioteca para um arquivo de configuração próprio usando a propriedade configSource:

  1. Especifique um configSource no seu App.config. Modifique o App.config para referenciar um arquivo de configuração externo:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="GoogleAdsApi"
                 type="System.Configuration.DictionarySectionHandler" />
      </configSections>
      <GoogleAdsApi configSource="GoogleAdsApi.config" />
    </configuration>
    
  2. Especifique o conteúdo do arquivo de configuração. Crie outro arquivo de configuração com o nome especificado em configSource (GoogleAdsApi.config) e mova o nó de configuração GoogleAdsApi do App.config para este arquivo:

    <?xml version="1.0" encoding="utf-8" ?>
    <GoogleAdsApi>
      <!-- More settings. -->
    </GoogleAdsApi>
    
  3. Atualize as regras de build no seu .csproj. Inclua o novo arquivo de configuração no projeto e defina a propriedade Copiar para o diretório de saída como Copiar sempre. Recompile e execute o projeto para que o aplicativo receba valores do novo arquivo de configuração.

Usar um arquivo JSON personalizado

É possível usar uma instância IConfigurationRoot para configurar a biblioteca de cliente.

Criar um arquivo JSON

Crie um arquivo JSON chamado GoogleAdsApi.json com uma estrutura semelhante ao arquivo App.config:

{
  "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"
}

Carregar a configuração

Em seguida, carregue o arquivo JSON em um 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);

Usar settings.json

O processo aqui é semelhante ao uso de um arquivo JSON personalizado, mas as chaves precisam estar dentro de uma seção chamada GoogleAdsApi:

{
  "GoogleAdsApi": {
    "OAuth2Mode": "APPLICATION",
    "OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
    "OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
    "OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
  }
}

Em seguida, extraia a seção GoogleAdsApi da instância IConfiguration do aplicativo (por exemplo, injetada pelo ASP.NET Core ou criada com ConfigurationBuilder):

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

Como alternativa, carregue um arquivo settings.json diretamente por caminho com config.LoadFromSettingsJson(filePath, "GoogleAdsApi") ou da variável de ambiente GOOGLE_ADS_CONFIGURATION_FILE_PATH (EnvironmentVariableNames.CONFIG_FILE_PATH) usando config.TryLoadFromEnvironmentFilePath.

Usar variáveis de ambiente

Também é possível inicializar o GoogleAdsClient usando variáveis de ambiente:

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

Confira a lista completa de variáveis de ambiente compatíveis.

Usar um stream genérico

Você também pode carregar a configuração, ou partes dela, de um fluxo genérico, incluindo um criptografado:

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);

Campos de configuração

As seções a seguir listam as configurações compatíveis com a biblioteca .NET do Google Ads.

Configurações de conectividade

  • Timeout: use essa chave para definir o tempo limite do serviço em milissegundos. O valor padrão é definido com base na configuração method_config/timeout em googleads_grpc_service_config.json. Defina um valor menor se precisar aplicar um limite mais curto no tempo máximo de uma chamada de API. É possível definir o tempo limite como duas horas ou mais, mas a API ainda pode exceder o tempo limite de solicitações de execução extremamente longa e retornar um erro DEADLINE_EXCEEDED.
  • ProxyServer: defina como o URL do servidor proxy HTTP se você estiver usando um proxy para se conectar à Internet.
  • ProxyUser: defina como o nome de usuário necessário para autenticar no servidor proxy. Deixe em branco se um nome de usuário não for necessário.
  • ProxyPassword: defina como a senha de ProxyUser se você definir um valor para ProxyUser.
  • ProxyDomain: defina como o domínio de ProxyUser se o servidor proxy exigir um.
  • MaxReceiveMessageLengthInBytes: use essa configuração para aumentar o tamanho máximo da resposta da API que a biblioteca de cliente pode processar. O valor padrão é 64 MB.
  • MaxMetadataSizeInBytes: use essa configuração para aumentar o tamanho máximo da resposta de erro da API que a biblioteca de cliente pode processar. O valor padrão é 16 MB.

Ajuste as configurações de MaxReceiveMessageLengthInBytes e MaxMetadataSizeInBytes para corrigir determinados erros de ResourceExhausted. Essas configurações corrigem erros do tipo:

Status(StatusCode="ResourceExhausted",Detail="Received
message larger than max (423184132 versus 67108864)"

Neste exemplo, o erro é devido ao tamanho da mensagem (423184132 bytes) ser maior do que o que a biblioteca pode processar (67108864 bytes). Aumente MaxReceiveMessageLengthInBytes para 500000000 para evitar esse erro. O erro também indica que seu código processou um objeto de resposta significativamente grande (como um SearchGoogleAdsResponse grande). Isso pode ter implicações de desempenho para seu código devido ao Large Object Heap do .NET. Se isso se tornar um problema de performance, talvez seja necessário reorganizar as chamadas de API ou redesenhar partes do app.

Configurações do OAuth2

Ao usar o OAuth 2.0 para autorizar suas chamadas nos servidores da API Google Ads, defina as seguintes chaves de configuração:

  • Defina AuthorizationMethod como OAuth2.
  • OAuth2Mode: defina como APPLICATION ou SERVICE_ACCOUNT.
  • OAuth2ClientId: defina esse valor como o ID do cliente OAuth 2.0.
  • OAuth2ClientSecret: defina esse valor como a chave secreta do cliente OAuth 2.0.
  • OAuth2Scope: defina esse valor como escopos diferentes se quiser autorizar tokens do OAuth 2.0 para várias APIs. Essa configuração é opcional.
  • UseApplicationDefaultCredentials: defina esse valor como true para autenticar usando as credenciais padrão do aplicativo (compatíveis com Google.Ads.GoogleAds v24.1.0 e versões mais recentes; config.LoadFromEnvironmentVariables() lê a variável de ambiente USE_APPLICATION_DEFAULT_CREDENTIALS sem prefixo).
  • Credentials: (somente ambiente de execução, compatível com v27.0.0 e versões mais recentes) injeta uma instância de ICredential ou GoogleCredential pré-construída diretamente em GoogleAdsConfig no ambiente de execução.

Se você estiver usando OAuth2Mode == APPLICATION, defina as seguintes chaves de configuração adicionais:

  • OAuth2RefreshToken: defina esse valor como um token de atualização do OAuth 2.0 pré-gerado se quiser reutilizar tokens do OAuth 2.0. Essa configuração é opcional.
  • OAuth2RedirectUri: defina esse valor como o URL de redirecionamento do OAuth 2.0. Essa configuração é opcional.

Consulte os guias a seguir para mais detalhes:

Se você estiver usando OAuth2Mode == SERVICE_ACCOUNT, defina as seguintes chaves de configuração adicionais:

  • OAuth2SecretsJsonPath: defina esse valor como o caminho do arquivo de chave JSON do OAuth 2.0.
  • OAuth2PrnEmail: defina esse valor como o endereço de e-mail da conta que você está representando ao usar a delegação em todo o domínio do Google Workspace. Essa configuração é opcional.

Consulte o guia Fluxo de conta de serviço do OAuth para mais detalhes.

Configurações de transporte

  • UseGrpcCore: defina essa configuração como true para usar a biblioteca Grpc.Core como a camada de transporte subjacente. Consulte Usar a biblioteca Grpc.Core.

Configurações da API Google Ads

As seguintes configurações são específicas da API Google Ads:

  • DeveloperToken: opcional no v27.3.0 e em versões mais recentes (GOOGLE_ADS_DEVELOPER_TOKEN). Os tokens de desenvolvedor foram desativados em 9 de setembro de 2026. No servidor da API, os níveis de acesso são determinados pelo seu projeto do Google Cloud independente da versão da biblioteca de cliente, e os servidores da API ignoram o cabeçalho developer-token (até que uma futura versão principal da API Google Ads o rejeite). Para omitir ou remover DeveloperToken da sua configuração, use Google.Ads.GoogleAds v27.3.0 ou mais recente, que removeu a validação DeveloperToken local do lado do cliente. As versões anteriores exigem um DeveloperToken não vazio para validação local.
  • LoginCustomerId: o ID do cliente autorizado a usar na solicitação, sem hifens (-).
  • LinkedCustomerId: esse cabeçalho só é obrigatório para métodos que atualizam os recursos de uma entidade quando têm permissão por meio de contas vinculadas na interface do Google Ads (recurso AccountLink na API Google Ads). Defina esse valor como o ID do cliente do provedor de dados que atualiza os recursos do ID do cliente especificado. Ele precisa ser definido sem hífens (-). Saiba mais sobre contas vinculadas.