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 को अपनी होम डायरेक्ट्री में कॉपी करें. साथ ही, इसमें बदलाव करके, सेवा खाते की कुंजी फ़ाइल की जगह और उस उपयोगकर्ता का ईमेल पता डालें जिसके नाम पर आपको काम करना है:
# 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'
# 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"
export GOOGLE_ADS_IMPERSONATED_EMAIL="your_email@email.com"
आपके पास प्रोग्राम के हिसाब से, रनटाइम में भी जानकारी भेजने का विकल्प होता है. इसके लिए, सेवा खाते की JSON फ़ाइल से क्रेडेंशियल बनाने के लिए, googleauth gem का इस्तेमाल करें:
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 = Google::Auth::ServiceAccountCredentials.make_creds(
json_key_io: File.open(key_file),
scope: scopes
)
# Initialize the Google Ads API client with these credentials
client = Google::Ads::GoogleAds::Client.new do |config|
config.developer_token = "YOUR_DEVELOPER_TOKEN"
# Inject the service account credentials
config.oauth2_client = credentials
end
ज़्यादा जानने के लिए, सेवा खाते के वर्कफ़्लो की गाइड देखें.
एक उपयोगकर्ता के लिए पुष्टि करने की प्रोसेस
अगर सेवा खातों का इस्तेमाल नहीं किया जा सकता, तो इस वर्कफ़्लो का इस्तेमाल किया जा सकता है. इस वर्कफ़्लो के लिए, कॉन्फ़िगरेशन के दो चरण ज़रूरी हैं:
- Google Ads API का इस्तेमाल करके मैनेज किए जाने वाले सभी खातों का ऐक्सेस, एक ही उपयोगकर्ता को दें. आम तौर पर, उपयोगकर्ता को Google Ads API मैनेजर खाते का ऐक्सेस दिया जाता है. साथ ही, उस मैनेजर खाते से सभी Google Ads खातों को लिंक किया जाता है.
- उपयोगकर्ता, gcloud जैसे कमांड-लाइन टूल या
GenerateUserCredentialsकोड के उदाहरण का इस्तेमाल करके, आपके ऐप्लिकेशन को अपने सभी Google Ads खातों को मैनेज करने की अनुमति देता है.
OAuth 2.0 क्रेडेंशियल को Ruby के लिए कॉन्फ़िगर किया जा सकता है. इसके लिए, google_ads_config.rb फ़ाइल को अपनी होम डायरेक्ट्री में कॉपी करें. इसके बाद, इसमें बदलाव करके अपना डेवलपर टोकन, क्लाइंट आईडी, क्लाइंट सीक्रेट, और रीफ़्रेश टोकन शामिल करें:
# The developer token is required to authenticate that you are allowed to
# make API calls.
c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
# 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_DEVELOPER_TOKEN="INSERT_DEVELOPER_TOKEN_HERE"
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.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
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 फ़ाइल को अपनी होम डायरेक्ट्री में कॉपी करें. इसके बाद, इसे बदलकर इसमें डेवलपर टोकन, क्लाइंट आईडी, क्लाइंट सीक्रेट, रीफ़्रेश टोकन, और ग्राहक आईडी शामिल करें:
# The developer token is required to authenticate that you are allowed to
# make API calls.
c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
# 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 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_DEVELOPER_TOKEN="INSERT_DEVELOPER_TOKEN_HERE"
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.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
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 कोड के उदाहरण में बताया गया है कि कोई उपयोगकर्ता जिन खातों को सीधे तौर पर ऐक्सेस कर सकता है उनकी सूची कैसे पाएं.
इसके बाद, इन खातों का इस्तेमाल
LoginCustomerIdसेटिंग के लिए मान्य वैल्यू के तौर पर किया जा सकता है.
ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल
Ruby क्लाइंट लाइब्रेरी, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल (एडीसी) का इस्तेमाल करके पुष्टि करने की सुविधा भी देती है. इससे आपको अपने ऐप्लिकेशन के लिए डिफ़ॉल्ट क्रेडेंशियल सेट करने की सुविधा मिलती है. इसके लिए, आपको अपने ऐप्लिकेशन के कॉन्फ़िगरेशन में 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 पर सेट करें:
# The developer token is required to authenticate that you are allowed to
# make API calls.
c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
# 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_DEVELOPER_TOKEN और GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS सेट करें:
export GOOGLE_ADS_DEVELOPER_TOKEN="INSERT_DEVELOPER_TOKEN_HERE"
export GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS="true"
रनटाइम के दौरान, प्रोग्राम के हिसाब से भी जानकारी दी जा सकती है. अपने Ruby कोड में क्लाइंट को शुरू करते समय, OAuth2 क्रेडेंशियल साफ़ तौर पर न दें. लाइब्रेरी, Google Cloud कमांड लाइन टूल से सेट अप किए गए क्रेडेंशियल का अपने-आप पता लगाएगी और उनका इस्तेमाल करेगी. आपको अब भी अपना डेवलपर टोकन देना होगा.
# Initialize the client. It will automatically use Application Default Credentials.
client = Google::Ads::GoogleAds::Client.new do |config|
# Developer Token is mandatory for the Google Ads API.
config.developer_token = "YOUR_DEVELOPER_TOKEN"
# 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 oauth2_client_id, oauth2_client_secret, or oauth2_refresh_token here.
end
Ruby क्लाइंट लाइब्रेरी को कॉन्फ़िगर करने के लिए उपलब्ध विकल्पों के बारे में ज़्यादा जानने के लिए, कॉन्फ़िगरेशन पेज पर जाएं.