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 खाते को मैनेज कर सकता है. इसे कॉन्फ़िगर करने के लिए, Google Cloud Console में JSON कुंजी फ़ाइल बनाएं और डाउनलोड करें. इसके बाद, google_ads_config.rb को अपनी होम डायरेक्ट्री में कॉपी करें और इसे बदलकर, सेवा खाते की कुंजी फ़ाइल की जगह की जानकारी दें. साथ ही, Google Workspace के डोमेन-वाइड डेलिगेशन का इस्तेमाल करते समय, उस उपयोगकर्ता का ईमेल पता दें जिसके नाम पर कार्रवाई की जानी है. यह जानकारी देना ज़रूरी नहीं है:
# You can also authenticate using a service account. If "keyfile" is
# specified below, then service account authentication will be assumed and
# the above authentication fields ignored. Read more about service account
# authentication here:
# https://developers.google.com/google-ads/api/docs/oauth/service-accounts
c.keyfile = 'path/to/keyfile.json'
# Optional unless using Google Workspace domain-wide delegation:
c.impersonate = 'INSERT_EMAIL_ADDRESS_TO_IMPERSONATE_HERE'
अगर आपको यह जानकारी किसी फ़ाइल में सेव नहीं करनी है और एनवायरमेंट वैरिएबल का इस्तेमाल करना है, तो GOOGLE_ADS_JSON_KEY_FILE_PATH (और वैकल्पिक GOOGLE_ADS_IMPERSONATED_EMAIL) सेट करें:
export GOOGLE_ADS_JSON_KEY_FILE_PATH="/path/to/your/service-account-key.json"
# Optional unless using Google Workspace domain-wide delegation:
export GOOGLE_ADS_IMPERSONATED_EMAIL="your_email@email.com"
सेवा खाते के keyfile का पाथ (और ज़रूरत पड़ने पर, किसी दूसरे खाते के तौर पर इस्तेमाल किया जाने वाला ईमेल पता) प्रोग्राम के हिसाब से रनटाइम में भी पास किया जा सकता है:
require 'google/ads/google_ads'
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
config.keyfile = '/path/to/your/service-account-key.json'
# Optional unless using Google Workspace domain-wide delegation:
config.impersonate = 'INSERT_EMAIL_ADDRESS_TO_IMPERSONATE_HERE'
end
इसके अलावा, सेवा खाते के क्रेडेंशियल बनाने के लिए googleauth gem का इस्तेमाल किया जा सकता है. साथ ही, credentials.updater_proc को config.authentication पर पास किया जा सकता है:
require 'googleauth'
require 'google/ads/google_ads'
# Path to your service account key file.
key_file = '/path/to/your/service-account-key.json'
# Define the scopes needed for the Google Ads API.
scopes = ['https://www.googleapis.com/auth/adwords']
# Create service account credentials.
credentials = File.open(key_file) do |io|
Google::Auth::ServiceAccountCredentials.make_creds(
json_key_io: io,
scope: scopes
)
end
# Initialize the Google Ads API client with these credentials.
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
# Inject the service account credential updater proc.
config.authentication = credentials.updater_proc
end
ज़्यादा जानने के लिए, सेवा खाते के वर्कफ़्लो की गाइड देखें.
एक उपयोगकर्ता के लिए पुष्टि करने की सुविधा का फ़्लो
अगर सेवा खातों का इस्तेमाल नहीं किया जा सकता, तो इस वर्कफ़्लो का इस्तेमाल किया जा सकता है. इस वर्कफ़्लो के लिए, कॉन्फ़िगरेशन के दो चरण ज़रूरी हैं:
- Google Ads API का इस्तेमाल करके मैनेज किए जाने वाले सभी खातों का ऐक्सेस, एक ही उपयोगकर्ता को दें. आम तौर पर, उपयोगकर्ता को Google Ads API मैनेजर खाते का ऐक्सेस दिया जाता है. साथ ही, उस मैनेजर खाते से सभी Google Ads खातों को लिंक किया जाता है.
- उपयोगकर्ता, Google Cloud कमांड-लाइन टूल या
GenerateUserCredentialsकोड के उदाहरण जैसे कमांड-लाइन टूल का इस्तेमाल करके, आपके ऐप्लिकेशन को अपने सभी Google Ads खातों को मैनेज करने की अनुमति देता है.
OAuth 2.0 क्रेडेंशियल को Ruby के लिए कॉन्फ़िगर किया जा सकता है. इसके लिए, google_ads_config.rb फ़ाइल को अपनी होम डायरेक्ट्री में कॉपी करें. इसके बाद, इसमें बदलाव करके अपना क्लाइंट आईडी, क्लाइंट सीक्रेट, और रीफ़्रेश टोकन शामिल करें:
# Authentication tells the API that you are allowed to make changes to the
# specific account you're trying to access.
# The default method of authentication is to use a refresh token, client id,
# and client secret to generate an access token.
c.client_id = 'INSERT_CLIENT_ID_HERE'
c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
अगर क्लाइंट को बिना किसी आर्ग्युमेंट के इंस्टैंटिएट किया जाता है, तो वह होम डायरेक्ट्री से कॉन्फ़िगरेशन फ़ाइल को अपने-आप पढ़ लेता है:
client = Google::Ads::GoogleAds::GoogleAdsClient.new
इसके अलावा, अगर आपको फ़ाइल को किसी दूसरी जगह पर सेव करना है, तो इस फ़ाइल को सेव करने के लिए, क्लाइंट को इंस्टैंटिएट किया जा सकता है. इसके लिए, आपको फ़ाइल का पाथ देना होगा:
client = Google::Ads::GoogleAds::GoogleAdsClient.new(
'path/to/google_ads_config.rb'
)
अगर आपको यह जानकारी किसी फ़ाइल में सेव नहीं करनी है और एनवायरमेंट वैरिएबल का इस्तेमाल करना है, तो इनमें से हर एक को सेट किया जा सकता है:
export GOOGLE_ADS_CLIENT_ID="INSERT_CLIENT_ID_HERE"
export GOOGLE_ADS_CLIENT_SECRET="INSERT_CLIENT_SECRET_HERE"
export GOOGLE_ADS_REFRESH_TOKEN="INSERT_REFRESH_TOKEN_HERE"
रनटाइम के दौरान, प्रोग्राम के ज़रिए भी जानकारी दी जा सकती है:
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
config.client_id = 'INSERT_CLIENT_ID_HERE'
config.client_secret = 'INSERT_CLIENT_SECRET_HERE'
config.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
end
ज़्यादा जानने के लिए, एक उपयोगकर्ता के लिए पुष्टि करने के वर्कफ़्लो की गाइड पढ़ें.
डिवाइस के एक से ज़्यादा उपयोगकर्ताओं के लिए पुष्टि करने का फ़्लो
अगर आपका ऐप्लिकेशन, उपयोगकर्ताओं को साइन इन करने और उनकी ओर से उनके Google Ads खातों को मैनेज करने के लिए, आपके ऐप्लिकेशन को अनुमति देने की सुविधा देता है, तो हमारा सुझाव है कि आप इस वर्कफ़्लो का इस्तेमाल करें. आपका ऐप्लिकेशन, OAuth 2.0 के उपयोगकर्ता क्रेडेंशियल बनाता और मैनेज करता है. इस वर्कफ़्लो को, एक उपयोगकर्ता वाले फ़्लो की तरह ही कॉन्फ़िगर किया जा सकता है. इसमें login_customer_id को भी शामिल किया जा सकता है.
हमारा सुझाव है कि आप कॉन्फ़िगरेशन फ़ाइल का इस्तेमाल करें. google_ads_config.rb फ़ाइल को अपनी होम डायरेक्ट्री में कॉपी करें. इसके बाद, इसमें बदलाव करके अपना क्लाइंट आईडी, क्लाइंट सीक्रेट, रीफ़्रेश टोकन, और ग्राहक आईडी शामिल करें:
# Authentication tells the API that you are allowed to make changes to the
# specific account you're trying to access.
# The default method of authentication is to use a refresh token, client id,
# and client secret to generate an access token.
c.client_id = 'INSERT_CLIENT_ID_HERE'
c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
# Required for manager accounts only: Specify the login customer ID used to
# authenticate API calls. This will be the customer ID of the authenticated
# manager account. If you need to use different values for this field, then
# make sure to fetch a new copy of the service after each time you change the
# value.
c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
अगर क्लाइंट को बिना किसी आर्ग्युमेंट के इंस्टैंटिएट किया जाता है, तो वह होम डायरेक्ट्री से कॉन्फ़िगरेशन फ़ाइल को अपने-आप पढ़ लेता है:
client = Google::Ads::GoogleAds::GoogleAdsClient.new
इसके अलावा, अगर आपको फ़ाइल को किसी दूसरी जगह पर सेव करना है, तो इस फ़ाइल को सेव करने के लिए, क्लाइंट को इंस्टैंटिएट किया जा सकता है. इसके लिए, आपको फ़ाइल का पाथ देना होगा:
client = Google::Ads::GoogleAds::GoogleAdsClient.new(
'path/to/google_ads_config.rb'
)
अगर आपको यह जानकारी किसी फ़ाइल में सेव नहीं करनी है और एनवायरमेंट वैरिएबल का इस्तेमाल करना है, तो इनमें से हर एक को सेट किया जा सकता है:
export GOOGLE_ADS_CLIENT_ID="INSERT_CLIENT_ID_HERE"
export GOOGLE_ADS_CLIENT_SECRET="INSERT_CLIENT_SECRET_HERE"
export GOOGLE_ADS_REFRESH_TOKEN="INSERT_REFRESH_TOKEN_HERE"
export GOOGLE_ADS_LOGIN_CUSTOMER_ID="INSERT_LOGIN_CUSTOMER_ID_HERE"
रनटाइम के दौरान, प्रोग्राम के ज़रिए भी जानकारी दी जा सकती है:
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
config.client_id = 'INSERT_CLIENT_ID_HERE'
config.client_secret = 'INSERT_CLIENT_SECRET_HERE'
config.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end
ज़्यादा जानने के लिए, डिवाइस के एक से ज़्यादा उपयोगकर्ताओं के लिए पुष्टि करने की सुविधा से जुड़ी वर्कफ़्लो गाइड देखें. Ruby क्लाइंट लाइब्रेरी में, रेफ़रंस के लिए कोड का उदाहरण शामिल होता है. GenerateUserCredentials कमांड-लाइन कोड के इस उदाहरण में बताया गया है कि रनटाइम के दौरान उपयोगकर्ता की पुष्टि कैसे की जाती है, ताकि उसके Google Ads खातों को मैनेज किया जा सके. इस कोड के उदाहरण का इस्तेमाल, डेस्कटॉप ऐप्लिकेशन बनाने के लिए किया जा सकता है. इन ऐप्लिकेशन में उपयोगकर्ता की पुष्टि करना ज़रूरी होता है.
एक से ज़्यादा खाते प्रबंधित करना
आम तौर पर, कोई उपयोगकर्ता एक से ज़्यादा Google Ads खातों को मैनेज करता है. इसके लिए, वह खातों को सीधे तौर पर ऐक्सेस करता है या Google Ads मैनेजर खाते का इस्तेमाल करता है. Ruby क्लाइंट लाइब्रेरी में, कोड के ये उदाहरण दिए गए हैं. इनमें बताया गया है कि ऐसे मामलों को कैसे हैंडल किया जाता है:
GetAccountHierarchyकोड के इस उदाहरण में, यह दिखाया गया है कि Google Ads मैनेजर खाते से जुड़े सभी खातों की सूची कैसे वापस पाई जाती है.ListAccessibleCustomersकोड के उदाहरण में दिखाया गया है कि किसी उपयोगकर्ता के पास जिन खातों का सीधा ऐक्सेस है उनकी सूची कैसे वापस पाई जाती है. इसके बाद, इन खातों का इस्तेमालlogin_customer_idसेटिंग के लिए मान्य वैल्यू के तौर पर किया जा सकता है.
ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल
Ruby क्लाइंट लाइब्रेरी (v36.1.0 और इसके बाद के वर्शन) में, ऐप्लिकेशन डिफ़ॉल्ट क्रेडेंशियल (एडीसी) का इस्तेमाल करके भी पुष्टि की जा सकती है. इससे, आपको अपने ऐप्लिकेशन के लिए डिफ़ॉल्ट क्रेडेंशियल सेट करने की सुविधा मिलती है. इसके लिए, आपको अपने ऐप्लिकेशन के कॉन्फ़िगरेशन में OAuth 2.0 की जानकारी कॉन्फ़िगर करने की ज़रूरत नहीं होती.
यह खास तौर पर लोकल डेवलपमेंट या अलग-अलग Google API के लिए डेवलपमेंट के दौरान काम आता है. ऐसा इसलिए, क्योंकि एक ही क्रेडेंशियल का फिर से इस्तेमाल किया जा सकता है. हालांकि, इसके लिए ज़रूरी है कि वे क्रेडेंशियल, OAuth 2.0 के ज़रूरी स्कोप को ऐक्सेस कर सकें.
Google Ads API के लिए, पक्का करें कि आपके ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल, https://www.googleapis.com/auth/adwords OAuth 2.0 स्कोप को ऐक्सेस कर सकें.
ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करने के लिए, Google Cloud के कमांड-लाइन टूल का इस्तेमाल करें और एडीसी के लिए पुष्टि करें:
gcloud auth application-default login
इस कमांड से एक वेब ब्राउज़र खुलता है. इससे आपको अपने Google खाते की पुष्टि करने की प्रोसेस पूरी करने में मदद मिलती है. अनुमति मिलने के बाद, यह क्रेडेंशियल को स्टैंडर्ड जगह पर सेव करता है. इसके बाद, आपको एडीसी का इस्तेमाल करने के लिए, अपना ऐप्लिकेशन अपडेट करना होगा.
google_ads_config.rb फ़ाइल को अपनी होम डायरेक्ट्री में कॉपी करें और use_application_default_credentials को true पर सेट करें:
# You can also authenticate using Application Default Credentials (ADC).
# To understand how ADC discovers credentials in a given environment, see:
# https://developers.google.com/identity/protocols/application-default-credentials
c.use_application_default_credentials = true
अगर आपको यह जानकारी किसी फ़ाइल में सेव नहीं करनी है और एनवायरमेंट वैरिएबल का इस्तेमाल करना है, तो GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS सेट करें:
export GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS="true"
आपके पास प्रोग्राम के हिसाब से, रनटाइम में भी जानकारी देने का विकल्प होता है. अपने Ruby कोड में क्लाइंट को शुरू करते समय, config.use_application_default_credentials = true सेट करें. साथ ही, OAuth 2.0 के क्रेडेंशियल साफ़ तौर पर न दें. यह लाइब्रेरी, Google Cloud के कमांड-लाइन टूल से सेट अप किए गए क्रेडेंशियल का अपने-आप पता लगाती है और उनका इस्तेमाल करती है:
# Initialize the client using Application Default Credentials.
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
config.use_application_default_credentials = true
# Optional: Specify a login customer ID if you are accessing accounts
# through a manager account.
# config.login_customer_id = 'YOUR_LOGIN_CUSTOMER_ID'
# Do NOT include client_id, client_secret, or refresh_token here.
end
Ruby क्लाइंट लाइब्रेरी को कॉन्फ़िगर करने के लिए उपलब्ध विकल्पों के बारे में ज़्यादा जानने के लिए, कॉन्फ़िगरेशन पेज पर जाएं.