पुष्टि करना और अनुमति देना

Google के अन्य एपीआई की तरह, Google Ads API भी पुष्टि करने और अनुमति देने के लिए OAuth 2.0 प्रोटोकॉल का इस्तेमाल करता है. OAuth 2.0 की मदद से, आपका Google Ads API क्लाइंट ऐप्लिकेशन, किसी उपयोगकर्ता के Google Ads खाते को ऐक्सेस कर सकता है. इसके लिए, उसे उपयोगकर्ता की लॉगिन जानकारी को मैनेज या सेव करने की ज़रूरत नहीं होती.

Google Ads के ऐक्सेस मॉडल के बारे में जानकारी

Google Ads API का असरदार तरीके से इस्तेमाल करने के लिए, आपको Google Ads के ऐक्सेस मॉडल के काम करने का तरीका समझना चाहिए. हमारा सुझाव है कि आप Google Ads के ऐक्सेस मॉडल की गाइड पढ़ें.

OAuth वर्कफ़्लो

Google Ads API का इस्तेमाल करते समय, तीन सामान्य वर्कफ़्लो का इस्तेमाल किया जाता है.

सेवा खाते का फ़्लो

अगर आपके वर्कफ़्लो में किसी व्यक्ति के इंटरैक्शन की ज़रूरत नहीं है, तो हमारा सुझाव है कि आप इस वर्कफ़्लो का इस्तेमाल करें. इस वर्कफ़्लो के लिए कॉन्फ़िगरेशन का एक चरण ज़रूरी है. इसमें उपयोगकर्ता को अपने Google Ads खाते में सेवा खाता जोड़ना होता है. इसके बाद, ऐप्लिकेशन सेवा खाते के क्रेडेंशियल का इस्तेमाल करके, उपयोगकर्ता के Google Ads खाते को मैनेज कर सकता है. Python लाइब्रेरी को इस तरह कॉन्फ़िगर किया जाता है:

  • अगर google-ads.yaml फ़ाइल या YAML स्ट्रिंग का इस्तेमाल किया जा रहा है, तो अपने कॉन्फ़िगरेशन में यह जानकारी जोड़ें. इससे, आपके लोकल एनवायरमेंट में निजी कुंजी वाली JSON फ़ाइल का पाथ सेट किया जा सकेगा:

    json_key_file_path: JSON_KEY_FILE_PATH
    

    इसके बाद, load_from_storage या load_from_string वाले तरीके को कॉल करें:

    from google.ads.googleads.client import GoogleAdsClient
    client = GoogleAdsClient.load_from_storage()
    
  • अगर लाइब्रेरी को कॉन्फ़िगर करने के लिए dict का इस्तेमाल किया जा रहा है, तो यहां दिए गए कुंजी-वैल्यू पेयर को शामिल करें और load_from_dict तरीके को कॉल करें. साथ ही, कॉन्फ़िगरेशन dict को पास करें:

    from google.ads.googleads.client import GoogleAdsClient
    
    configuration = {
      # ...
      "json_key_file_path": JSON_KEY_FILE_PATH
      # ...
    }
    
    client = GoogleAdsClient.load_from_dict(configuration)
    
  • अगर एनवायरमेंट वैरिएबल का इस्तेमाल किया जा रहा है, तो अपने bashकॉन्फ़िगरेशन या एनवायरमेंट में यह जोड़ें:

    export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
    

    इसके बाद, load_from_env वाले तरीके को कॉल करें:

    from google.ads.googleads.client import GoogleAdsClient
    client = GoogleAdsClient.load_from_env()
      ```
    

अगर इनमें से किसी भी कॉन्फ़िगरेशन के तरीके में json_key_file_path कॉन्फ़िगरेशन का विकल्प मौजूद है और json_key_file_path विकल्प False है या सेट नहीं है, तो लाइब्रेरी, सेवा खाते के फ़्लो का इस्तेमाल करके अपने-आप अनुमति दे देगी.use_application_default_credentials

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

एक उपयोगकर्ता के लिए पुष्टि करने की प्रोसेस

अगर सेवा खातों का इस्तेमाल नहीं किया जा सकता, तो इस वर्कफ़्लो का इस्तेमाल किया जा सकता है. इस वर्कफ़्लो के लिए, कॉन्फ़िगरेशन के दो चरण ज़रूरी हैं:

  1. Google Ads API का इस्तेमाल करके मैनेज किए जाने वाले सभी खातों का ऐक्सेस, एक ही उपयोगकर्ता को दें. आम तौर पर, उपयोगकर्ता को Google Ads API मैनेजर खाते का ऐक्सेस दिया जाता है. साथ ही, उस मैनेजर खाते से सभी Google Ads खातों को लिंक किया जाता है.

  2. उपयोगकर्ता, gcloud CLI या generate_user_credentials कोड के उदाहरण जैसे टूल का इस्तेमाल करके, आपके ऐप्लिकेशन को अपने सभी Google Ads खातों को मैनेज करने की अनुमति देता है.

लाइब्रेरी को उपयोगकर्ता के OAuth 2.0 क्रेडेंशियल का इस्तेमाल करके, इस तरह शुरू किया जा सकता है:

gcloud सीएलआई टूल का इस्तेमाल करने पर (सुझाया गया)

  1. अपने लोकल एनवायरमेंट में ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल (एडीसी) सेट अप करने के लिए, क्रेडेंशियल जनरेट करना दस्तावेज़ में दिया गया तरीका अपनाएं.

  2. अपने google-ads.yaml या YAML स्ट्रिंग में यह कॉन्फ़िगरेशन जोड़ें:

    use_application_default_credentials: true
    

    इसके बाद, load_from_storage या load_from_string में से किसी एक तरीके को कॉल करें:

    from google.ads.googleads.client import GoogleAdsClient
    client = GoogleAdsClient.load_from_storage()
    

    अगर लाइब्रेरी को कॉन्फ़िगर करने के लिए, dict का इस्तेमाल किया जाता है, तो यहां दिए गए मुख्य-वैल्यू पेयर को शामिल करें और load_from_dict तरीके को कॉल करें:

    from google.ads.googleads.client import GoogleAdsClient
    
    configuration = {
      # ...
      "use_account_default_credentials": True
      # ...
    }
    
    client = GoogleAdsClient.load_from_dict(configuration)
    

    अगर एनवायरमेंट वैरिएबल का इस्तेमाल किया जा रहा है, तो अपने bashकॉन्फ़िगरेशन या एनवायरमेंट में यह जोड़ें:

    export GOOGLE_ADS_USE_ACCOUNT_DEFAULT_CREDENTIALS=true
    

    इसके बाद, load_from_env वाले तरीके को कॉल करें:

    from google.ads.googleads.client import GoogleAdsClient
    client = GoogleAdsClient.load_from_env()
    

OAuth टोकन सीधे तौर पर मैनेज करने पर

  1. कंसोल प्रोजेक्ट सेट अप करने के लिए यह तरीका अपनाएं. साथ ही, JSON फ़ाइल डाउनलोड करें. इसमें आपके प्रोजेक्ट का क्लाइंट आईडी और क्लाइंट सीक्रेट शामिल होता है.

  2. Python क्लाइंट लाइब्रेरी को अपने कंप्यूटर पर क्लोन करें और इसकी डायरेक्ट्री में जाएं:

    $ git clone https://github.com/googleads/google-ads-python.git
    $ cd google-ads-python
    
  3. उदाहरण को लागू करें. इसके लिए, पहले चरण में डाउनलोड की गई JSON फ़ाइल का ऐब्सलूट पाथ डालें:

    $ python examples/authentication/generate_user_credentials.py -c PATH_TO_CREDENTIALS_JSON
    

    यह प्रोसेस पूरी होने के बाद, आपके कंसोल पर रीफ़्रेश टोकन प्रिंट हो जाता है. इसे कॉपी करें और अगले चरण के लिए सेव करें.

  4. अपनी पसंद के कॉन्फ़िगरेशन में ये सेटिंग जोड़कर, लाइब्रेरी को कॉन्फ़िगर करें:

    अपने google-ads.yaml या YAML स्ट्रिंग में यह कॉन्फ़िगरेशन जोड़ें:

    client_id: INSERT_OAUTH2_CLIENT_ID_HERE
    client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
    refresh_token: INSERT_REFRESH_TOKEN_HERE
    

    इसके बाद, load_from_storage या load_from_string में से किसी एक तरीके को कॉल करें:

    from google.ads.googleads.client import GoogleAdsClient
    client = GoogleAdsClient.load_from_storage()
    

    अगर लाइब्रेरी को कॉन्फ़िगर करने के लिए dict का इस्तेमाल किया जा रहा है, तो यहां दिए गए की-वैल्यू पेयर शामिल करें और load_from_dict तरीके को कॉल करें:

    from google.ads.googleads.client import GoogleAdsClient
    
    configuration = {
      # ...
      "client_id": INSERT_OAUTH2_CLIENT_ID_HERE
      "client_secret": INSERT_OAUTH2_CLIENT_SECRET_HERE
      "refresh_token": INSERT_REFRESH_TOKEN_HERE
      # ...
    }
    
    client = GoogleAdsClient.load_from_dict(configuration)
    

    अगर एनवायरमेंट वैरिएबल का इस्तेमाल किया जा रहा है, तो अपने bashकॉन्फ़िगरेशन या एनवायरमेंट में यह जोड़ें:

    export GOOGLE_ADS_CLIENT_ID=INSERT_OAUTH2_CLIENT_ID_HERE
    export GOOGLE_ADS_CLIENT_SECRET=INSERT_OAUTH2_CLIENT_SECRET_HERE
    export GOOGLE_ADS_REFRESH_TOKEN=INSERT_REFRESH_TOKEN_HERE
    

    इसके बाद, load_from_env वाले तरीके को कॉल करें:

    from google.ads.googleads.client import GoogleAdsClient
    client = GoogleAdsClient.load_from_env()
    

ज़्यादा जानने के लिए, एक उपयोगकर्ता के लिए पुष्टि करने से जुड़े वर्कफ़्लो की गाइड पढ़ें.

एक से ज़्यादा उपयोगकर्ताओं के लिए पुष्टि करने की प्रोसेस

अगर आपका ऐप्लिकेशन, उपयोगकर्ताओं को साइन इन करने और उनकी ओर से उनके Google Ads खातों को मैनेज करने के लिए, आपके ऐप्लिकेशन को अनुमति देने की सुविधा देता है, तो हमारा सुझाव है कि आप इस वर्कफ़्लो का इस्तेमाल करें. आपका ऐप्लिकेशन, OAuth 2.0 के उपयोगकर्ता क्रेडेंशियल बनाता और मैनेज करता है. उपयोगकर्ता के क्रेडेंशियल का इस्तेमाल करके, लाइब्रेरी को इस तरह से शुरू किया जा सकता है. इसमें यह माना जाता है कि आपका ऐप्लिकेशन, रनटाइम के दौरान क्रेडेंशियल हासिल करता है. ऐसा, अनुमति देने का फ़्लो लागू करके या उन्हें डेटास्टोर से लोड करके किया जाता है:

dict, रनटाइम के दौरान क्रेडेंशियल पाने के लिए, कॉन्फ़िगरेशन का सबसे आसान तरीका है:

from google.ads.googleads.client import GoogleAdsClient

configuration = {
  # ...
  "client_id": client_id
  "client_secret": client_secret
  "refresh_token": refresh_token
  # ...
}

client = GoogleAdsClient.load_from_dict(configuration)

ज़्यादा जानने के लिए, एक से ज़्यादा उपयोगकर्ताओं के लिए पुष्टि करने की सुविधा से जुड़ी वर्कफ़्लो गाइड देखें.

मैन्युअल तरीके से पुष्टि करना

किसी भी तरीके से पुष्टि करने के क्रेडेंशियल जनरेट किए जा सकते हैं. साथ ही, क्लाइंट क्लास को सीधे तौर पर इंस्टैंटिएट करके, उन्हें GoogleAdsClient को मैन्युअल तरीके से दिया जा सकता है. मान लें कि आपने जो क्रेडेंशियल ऑब्जेक्ट बनाया है वह google.auth.credentials.Credentials का इंस्टेंस है. इसे इस तरह पास किया जा सकता है:

from google.ads.googleads.client import GoogleAdsClient
from google.auth import default

# This line retrieves ADCs from the environment. You can use any authentication
# approach as long as the `credentials` variable is an instance of
# `google.auth.credentials.Credentials`
credentials = default(scopes=["https://www.googleapis.com/auth/adwords"])

client = GoogleAdsClient(
  credentials=credentials,
  # ... insert remaining parameters
)

अगर मेरा उपयोगकर्ता कई खातों को मैनेज करता है, तो क्या होगा?

ऐसा अक्सर होता है कि कोई उपयोगकर्ता एक से ज़्यादा Google Ads खातों को मैनेज करता है. इसके लिए, वह खातों को सीधे तौर पर ऐक्सेस करता है या Google Ads मैनेजर खाते का इस्तेमाल करता है. Python क्लाइंट लाइब्रेरी में, कोड के ये उदाहरण दिए गए हैं. इनमें बताया गया है कि ऐसे मामलों को कैसे हैंडल किया जाता है.

  1. कोड के इस उदाहरण get_account_hierarchy में, यह दिखाया गया है कि Google Ads मैनेजर खाते से जुड़े सभी खातों की सूची कैसे वापस पाई जाती है.
  2. कोड के इस उदाहरण list_accessible_customers में दिखाया गया है कि किसी उपयोगकर्ता के पास जिन खातों का सीधा ऐक्सेस है उनकी सूची कैसे वापस पाई जाती है. इसके बाद, इन खातों का इस्तेमाल login_customer_id सेटिंग के लिए मान्य वैल्यू के तौर पर किया जा सकता है.