कॉन्फ़िगरेशन

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 प्रॉपर्टी का इस्तेमाल करके, उसकी कॉन्फ़िगरेशन फ़ाइल में ले जाएं:

  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 (GoogleAdsApi.config) में दिए गए नाम से एक और कॉन्फ़िगरेशन फ़ाइल बनाएं. साथ ही, App.config से GoogleAdsApi कॉन्फ़िगरेशन नोड को इस फ़ाइल में ले जाएं:

    <?xml version="1.0" encoding="utf-8" ?>
    <GoogleAdsApi>
      <!-- More settings. -->
    </GoogleAdsApi>
    
  3. अपने .csproj में, बिल्ड के नियमों को अपडेट करें. अपने प्रोजेक्ट में नई कॉन्फ़िगरेशन फ़ाइल शामिल करें. साथ ही, उसकी Copy to Output Directory प्रॉपर्टी को Copy always पर सेट करें. अपने प्रोजेक्ट को फिर से बनाएं और चलाएं, ताकि आपका ऐप्लिकेशन नई कॉन्फ़िगरेशन फ़ाइल से वैल्यू ले सके.

कस्टम JSON फ़ाइल का इस्तेमाल करना

क्लाइंट लाइब्रेरी को कॉन्फ़िगर करने के लिए, IConfigurationRoot इंस्टेंस का इस्तेमाल किया जा सकता है.

JSON फ़ाइल बनाना

GoogleAdsApi.json नाम की एक JSON फ़ाइल बनाएं. इसका स्ट्रक्चर, 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"
}

कॉन्फ़िगरेशन लोड करना

इसके बाद, 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);

इसके अलावा, settings.json फ़ाइल को सीधे तौर पर पाथ से config.LoadFromSettingsJson(filePath, "GoogleAdsApi") का इस्तेमाल करके लोड किया जा सकता है. इसके अलावा, GOOGLE_ADS_CONFIGURATION_FILE_PATH एनवायरमेंट वैरिएबल (EnvironmentVariableNames.CONFIG_FILE_PATH) से config.TryLoadFromEnvironmentFilePath का इस्तेमाल करके भी लोड किया जा सकता है.

एनवायरमेंट वैरिएबल का इस्तेमाल करना

एनवायरमेंट वैरिएबल का इस्तेमाल करके भी 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 सेटिंग के आधार पर सेट की जाती है. अगर आपको एपीआई कॉल के लिए ज़्यादा से ज़्यादा समय की सीमा कम करनी है, तो कम वैल्यू सेट करें. टाइम आउट की अवधि को दो घंटे या उससे ज़्यादा पर सेट किया जा सकता है. हालांकि, एपीआई अब भी लंबे समय तक चलने वाले अनुरोधों के लिए टाइम आउट हो सकता है और DEADLINE_EXCEEDED गड़बड़ी का मैसेज दिखा सकता है.
  • ProxyServer: अगर इंटरनेट से कनेक्ट करने के लिए प्रॉक्सी का इस्तेमाल किया जा रहा है, तो इसे एचटीटीपी प्रॉक्सी सर्वर के यूआरएल पर सेट करें.
  • ProxyUser: इसे उस उपयोगकर्ता नाम पर सेट करें जिसका इस्तेमाल आपको प्रॉक्सी सर्वर के ख़िलाफ़ पुष्टि करने के लिए करना है. अगर उपयोगकर्ता नाम की ज़रूरत नहीं है, तो इसे खाली छोड़ दें.
  • ProxyPassword: अगर आपने ProxyUser के लिए कोई वैल्यू सेट की है, तो इसे ProxyUser के पासवर्ड पर सेट करें.
  • ProxyDomain: अगर आपके प्रॉक्सी सर्वर के लिए इसे सेट करना ज़रूरी है, तो इसे ProxyUser के डोमेन पर सेट करें.
  • MaxReceiveMessageLengthInBytes: इस सेटिंग का इस्तेमाल करके, एपीआई से मिले जवाब के ज़्यादा से ज़्यादा साइज़ को बढ़ाया जा सकता है. इससे क्लाइंट लाइब्रेरी, बड़े साइज़ के जवाब को भी हैंडल कर पाएगी. डिफ़ॉल्ट वैल्यू 64 एमबी होती है.
  • MaxMetadataSizeInBytes: इस सेटिंग का इस्तेमाल करके, एपीआई से मिलने वाले गड़बड़ी के जवाब का ज़्यादा से ज़्यादा साइज़ बढ़ाया जा सकता है. यह साइज़, क्लाइंट लाइब्रेरी मैनेज कर सकती है. डिफ़ॉल्ट वैल्यू 16 एमबी होती है.

ResourceExhausted से जुड़ी कुछ गड़बड़ियों को ठीक करने के लिए, MaxReceiveMessageLengthInBytes और MaxMetadataSizeInBytes सेटिंग में बदलाव करें. इन सेटिंग से, इस तरह की गड़बड़ियों को ठीक किया जा सकता है:

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

इस उदाहरण में, गड़बड़ी की वजह मैसेज का साइज़ (423184132 bytes) है. यह साइज़, लाइब्रेरी के हैंडल किए जा सकने वाले साइज़ (67108864 bytes) से ज़्यादा है. इस गड़बड़ी से बचने के लिए, MaxReceiveMessageLengthInBytes को बढ़ाकर 500000000 करें. ध्यान दें कि इस गड़बड़ी से यह भी पता चलता है कि आपके कोड ने बहुत बड़े रिस्पॉन्स ऑब्जेक्ट (जैसे कि बड़ा SearchGoogleAdsResponse) को हैंडल किया है. .NET के लार्ज ऑब्जेक्ट हीप की वजह से, आपके कोड की परफ़ॉर्मेंस पर इसका असर पड़ सकता है. अगर इससे परफ़ॉर्मेंस पर असर पड़ता है, तो आपको यह देखना होगा कि एपीआई कॉल को कैसे फिर से व्यवस्थित किया जाए या अपने ऐप्लिकेशन के कुछ हिस्सों को फिर से डिज़ाइन कैसे किया जाए.

OAuth2 सेटिंग

Google Ads API सर्वर के ख़िलाफ़ अपने कॉल को अनुमति देने के लिए OAuth 2.0 का इस्तेमाल करते समय, आपको कॉन्फ़िगरेशन की इन कुंजियों को सेट करना चाहिए:

  • AuthorizationMethod: इसे OAuth2 पर सेट करें.
  • OAuth2Mode: इसे APPLICATION या SERVICE_ACCOUNT पर सेट करें.
  • OAuth2ClientId: इस वैल्यू को अपने OAuth 2.0 क्लाइंट आईडी पर सेट करें.
  • OAuth2ClientSecret: इस वैल्यू को अपने OAuth 2.0 क्लाइंट सीक्रेट पर सेट करें.
  • OAuth2Scope: अगर आपको कई एपीआई के लिए OAuth 2.0 टोकन को अनुमति देनी है, तो इस वैल्यू को अलग-अलग स्कोप पर सेट करें. इस सेटिंग का इस्तेमाल करना ज़रूरी नहीं है.
  • UseApplicationDefaultCredentials: पुष्टि करने के लिए, इस वैल्यू को true पर सेट करें. इसके लिए, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करें. यह सुविधा Google.Ads.GoogleAds v24.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 रीडायरेक्ट यूआरएल पर सेट करें. इस सेटिंग का इस्तेमाल करना ज़रूरी नहीं है.

ज़्यादा जानकारी के लिए, यहां दी गई गाइड देखें:

अगर OAuth2Mode == SERVICE_ACCOUNT का इस्तेमाल किया जा रहा है, तो आपको कॉन्फ़िगरेशन की इन अतिरिक्त कुंजियों को सेट करना होगा:

  • OAuth2SecretsJsonPath: इस वैल्यू को OAuth 2.0 JSON कुंजी फ़ाइल के पाथ पर सेट करें.
  • OAuth2PrnEmail: Google Workspace के डोमेन-वाइड डेलिगेशन का इस्तेमाल करते समय, इस वैल्यू को उस खाते के ईमेल पते पर सेट करें जिसका इस्तेमाल किया जा रहा है. इस सेटिंग का इस्तेमाल करना ज़रूरी नहीं है.

ज़्यादा जानकारी के लिए, OAuth सेवा खाते का फ़्लो गाइड देखें.

परिवहन सेटिंग

Google Ads API की सेटिंग

यहां दी गई सेटिंग, Google Ads API के लिए खास तौर पर बनाई गई हैं:

  • DeveloperToken: v27.3.0 और इसके बाद के वर्शन में इस्तेमाल करना (GOOGLE_ADS_DEVELOPER_TOKEN) 9 सितंबर, 2026 को डेवलपर टोकन बंद कर दिए गए थे. एपीआई सर्वर पर, ऐक्सेस लेवल आपके Google Cloud प्रोजेक्ट से तय किए जाते हैं. इससे क्लाइंट लाइब्रेरी के वर्शन पर कोई असर नहीं पड़ता. साथ ही, एपीआई सर्वर developer-token हेडर को अनदेखा करते हैं. ऐसा तब तक होता है, जब तक Google Ads API का आने वाला कोई मेजर वर्शन इसे अस्वीकार नहीं कर देता. अपने कॉन्फ़िगरेशन से DeveloperToken को हटाने या शामिल न करने के लिए, Google.Ads.GoogleAds v27.3.0 या इसके बाद के वर्शन का इस्तेमाल करें. इनमें लोकल क्लाइंट-साइड DeveloperToken की पुष्टि करने की सुविधा हटा दी गई है. पहले के वर्शन में, लोकल पुष्टि के लिए DeveloperToken में कोई वैल्यू डालना ज़रूरी था.
  • LoginCustomerId: यह उस ग्राहक का आईडी है जिसे अनुरोध में इस्तेमाल करने की अनुमति मिली है. इसमें हाइफ़न (-) नहीं होते.
  • LinkedCustomerId: यह हेडर सिर्फ़ उन तरीकों के लिए ज़रूरी है जो Google Ads के यूज़र इंटरफ़ेस (यूआई) में लिंक किए गए खातों के ज़रिए अनुमति मिलने पर, किसी इकाई के संसाधनों को अपडेट करते हैं (Google Ads API में AccountLink संसाधन). इस वैल्यू को उस डेटा प्रोवाइडर के ग्राहक आईडी पर सेट करें जो बताए गए ग्राहक आईडी के संसाधनों को अपडेट करता है. इसे हाइफ़न (-) के बिना सेट किया जाना चाहिए. लिंक किए गए खातों के बारे में ज़्यादा जानें.