सेवा खाते के वर्कफ़्लो की तरह ही, एक उपयोगकर्ता के लिए पुष्टि करने की प्रोसेस में, Google Ads के यूज़र इंटरफ़ेस (यूआई) की ओर से दी जाने वाली अनुमति और उपयोगकर्ता को मैनेज करने की सुविधाओं का इस्तेमाल किया जाता है. इससे ऐप्लिकेशन को सभी ज़रूरी खातों का ऐक्सेस मिलता है. पुष्टि करने के इस वर्कफ़्लो में दो चरण होते हैं:
- आपने किसी एक उपयोगकर्ता को उन सभी Google Ads खातों का ऐक्सेस दिया हो जिन्हें ऐप्लिकेशन को मैनेज करना है.
- उपयोगकर्ता, आपके ऐप्लिकेशन को अपने Google Ads खातों को मैनेज करने की अनुमति देता है. इससे ऐप्लिकेशन को सभी Google Ads खातों का ऐक्सेस मिल जाता है.
सिर्फ़ एक उपयोगकर्ता के शामिल होने की वजह से, आपके पास gcloud CLI या GenerateUserCredential कोड का उदाहरण जैसे टूल का इस्तेमाल करने का विकल्प होता है. इसके बजाय, आपको OAuth 2.0 उपयोगकर्ता की पुष्टि करने वाला अपना फ़्लो बनाने की ज़रूरत नहीं होती.
इस वर्कफ़्लो का इस्तेमाल, ऐसे मामलों में भी किया जा सकता है जब आपके खातों को कुछ ही लोगों के लॉगिन से ऐक्सेस किया जा सकता हो. उदाहरण के लिए, तीन से चार लोग. ऐसे में, OAuth के ज़रिए कई लोगों की पुष्टि करने वाले वर्कफ़्लो को पूरी तरह से बनाने में लगने वाली मेहनत, तीन से चार लोगों के लिए gcloud CLI जैसे कमांड-लाइन टूल का इस्तेमाल करके अनुमति पाने में लगने वाली मेहनत की तुलना में ज़्यादा होती है.
कमियां
सेवा खाते के वर्कफ़्लो की तुलना में, इस फ़्लो के कुछ नुकसान हैं:
- उपयोगकर्ता की पुष्टि करने के वर्कफ़्लो के लिए, आपको Google Cloud Console में OAuth 2.0 क्लाइंट आईडी और सीक्रेट बनाना होगा. इसके लिए, सेवा खाता और कुंजी बनाने की तुलना में कॉन्फ़िगरेशन के ज़्यादा चरणों की ज़रूरत होती है.
- अगर अनुमति पा चुका उपयोगकर्ता टीम या कंपनी छोड़ देता है, तो हो सकता है कि आपके खातों से उपयोगकर्ता को हटाने या उसके खाते को बंद करने पर, आपका ऐप्लिकेशन काम न करे. सेवा खाते, किसी व्यक्ति से नहीं जुड़े होते. इसलिए, इस जोखिम से बचा जा सकता है.
- Google Ads खाते को अनुमति देने वाले उपयोगकर्ता को अपने Google खाते में पासकी की सुविधा चालू करनी चाहिए. इससे वह अपने Google खाते को खराब सुरक्षा, मैलवेयर या फ़िशिंग की वजह से हैक होने से बचा पाएगा. पासकी चालू करने के लिए, सेवा खातों की ज़रूरत नहीं होती. साथ ही, इन पर इस समस्या का असर कम पड़ता है, क्योंकि हमले के कुछ तरीके इन पर सीधे तौर पर लागू नहीं होते.
क्रेडेंशियल जनरेट करना
अपने ऐप्लिकेशन के लिए, OAuth के लिए सहमति की स्क्रीन कॉन्फ़िगर करें और
https://www.googleapis.com/auth/adwordsको OAuth 2.0 स्कोप के तौर पर जोड़ें. ज़्यादा जानकारी के लिए, OAuth के लिए सहमति की स्क्रीन सेट अप करना लेख पढ़ें.निर्देशों का पालन करके, क्लाइंट आईडी और क्लाइंट सीक्रेट बनाएं. OAuth 2.0 क्लाइंट बनाने के बाद, पुष्टि करने वाले डायलॉग बॉक्स में मौजूद JSON डाउनलोड करें बटन पर क्लिक करके, क्लाइंट की JSON फ़ाइल डाउनलोड करें. फ़ाइल को
credentials.jsonके तौर पर सेव करें.उस उपयोगकर्ता खाते की पहचान करें जिसके पास उन सभी Google Ads खातों का ऐक्सेस हो जिन्हें आपको अपने ऐप्लिकेशन का इस्तेमाल करके मैनेज करना है. अगर कुछ खातों का ऐक्सेस नहीं है, तो उस उपयोगकर्ता को खाते का ऐक्सेस दें.
gcloud सीएलआई को डाउनलोड और इंस्टॉल करें. इंस्टॉल हो जाने के बाद, पुष्टि करें कि टूल सही तरीके से काम कर रहा है. इसके लिए, कमांड-लाइन प्रॉम्प्ट से
gcloud versionकमांड चलाएं. आउटपुट ऐसा दिखता है:gcloud versionGoogle Cloud SDK 492.0.0 alpha 2024.09.06 beta 2024.09.06 bq 2.1.8 bundled-python3-unix 3.11.9 core 2024.09.06 enterprise-certificate-proxy 0.3.2 gcloud-crc32c 1.0.0पिछले चरण की
credentials.jsonफ़ाइल के साथ gcloud CLI टूल चलाकर, OAuth 2.0 रीफ़्रेश टोकन जनरेट करें.--client-id-fileको पास करना ज़रूरी है, ताकि रीफ़्रेश टोकन आपके Google API Console प्रोजेक्ट के तहत जारी किया जा सके. ऐसा gcloud CLI के डिफ़ॉल्ट प्रोजेक्ट के बजाय किया जाता है:gcloud auth application-default login \ --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform \ --client-id-file=PATH_TO_CREDENTIALS_JSONgcloudकमांड, नई ब्राउज़र विंडो में Google खाते में साइन-इन करने की विंडो खोलती है. साथ ही, आपको OAuth 2.0 की पुष्टि करने के चरणों के बारे में बताती है. पक्का करें कि आपने उसी उपयोगकर्ता के तौर पर साइन इन किया हो जिसे आपने पिछले चरणों में चुना था. अगर आपका ऐप्लिकेशन पुष्टि नहीं किया गया है, तो आपको चेतावनी वाली स्क्रीन दिख सकती है. ऐसे मामलों में, ऐडवांस सेटिंग लिंक पर क्लिक करना सुरक्षित होता है. इसके बाद, PROJECT_NAME (सुरक्षित नहीं है) पर जाएं विकल्प पर क्लिक करें.स्कोप की पुष्टि करने के बाद, अनुमति देने के लिए जारी रखें बटन पर क्लिक करें. ब्राउज़र
https://cloud.google.com/sdk/auth_successपर रीडायरेक्ट हो जाता है. इससे पता चलता है कि पुष्टि हो गई है. इस पेज पर यह मैसेज दिखता है:Authorization code granted. Close this tab.gcloudकमांड, यह मैसेज प्रिंट करती है:Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]application_default_credentials.jsonफ़ाइल खोलें. इसका कॉन्टेंट, यहां दिए गए कॉन्टेंट से मिलता-जुलता है:{ "account": "", "client_id": "******.apps.googleusercontent.com", "client_secret": "******", "refresh_token": "******", "type": "authorized_user", "universe_domain": "googleapis.com" }
क्लाइंट लाइब्रेरी का कॉन्फ़िगरेशन
अपनी प्रोग्रामिंग लैंग्वेज से जुड़ा टैब चुनें. इसमें क्लाइंट लाइब्रेरी को कॉन्फ़िगर करने के बारे में निर्देश दिए गए हैं. अगर आपका अधिकृत उपयोगकर्ता, Google Ads मैनेजर खाते (एमसीसी) के ज़रिए क्लाइंट खातों को ऐक्सेस करता है, तो login-customer-id (या loginCustomerId) को उस मैनेजर खाते के 10 अंकों वाले ग्राहक आईडी पर सेट करें. इसमें हाइफ़न नहीं होने चाहिए.
Java
अपनी ads.properties फ़ाइल में, इन कुंजियों को कॉन्फ़िगर करें.
api.googleads.clientId=INSERT_OAUTH2_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
ज़्यादा विकल्पों के लिए, कॉन्फ़िगरेशन गाइड देखें.
.NET
GoogleAdsConfig इंस्टेंस पर OAuth 2.0 क्रेडेंशियल सेट करें और इसका इस्तेमाल करके, GoogleAdsClient ऑब्जेक्ट को शुरू करें.
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.APPLICATION,
OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID_HERE",
OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE",
OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
};
GoogleAdsClient client = new GoogleAdsClient(config);
ज़्यादा विकल्पों के लिए, कॉन्फ़िगरेशन गाइड देखें.
Python
अपनी google-ads.yaml फ़ाइल में, इन कुंजियों को कॉन्फ़िगर करें.
client_id: INSERT_OAUTH2_CLIENT_ID_HERE
client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
refresh_token: INSERT_OAUTH2_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
use_proto_plus: True
ज़्यादा विकल्पों के लिए, कॉन्फ़िगरेशन गाइड देखें.
PHP
google_ads_php.ini में ये कुंजियां कॉन्फ़िगर करें.
[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
[OAUTH2]
clientId = "INSERT_OAUTH2_CLIENT_ID_HERE"
clientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE"
refreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE"
ज़्यादा विकल्पों के लिए, कॉन्फ़िगरेशन गाइड देखें.
Ruby
अपनी google_ads_config.rb फ़ाइल में, इन कुंजियों को कॉन्फ़िगर करें.
Google::Ads::GoogleAds::Config.new do |c|
c.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
c.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end
ज़्यादा विकल्पों के लिए, कॉन्फ़िगरेशन गाइड देखें.
Perl
अपनी googleads.properties फ़ाइल में, इन कुंजियों को कॉन्फ़िगर करें.
clientId=INSERT_OAUTH2_CLIENT_ID_HERE
clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
ज़्यादा विकल्पों के लिए, कॉन्फ़िगरेशन गाइड देखें.
curl
सबसे पहले, एचटीटीपी क्लाइंट का इस्तेमाल करके, OAuth 2.0 का ऐक्सेस टोकन फ़ेच करें. इस गाइड में curl कमांड का इस्तेमाल किया गया है.
curl \
--data "grant_type=refresh_token" \
--data "client_id=CLIENT_ID" \
--data "client_secret=CLIENT_SECRET" \
--data "refresh_token=REFRESH_TOKEN" \
https://oauth2.googleapis.com/tokenअब एपीआई कॉल में ऐक्सेस टोकन का इस्तेमाल किया जा सकता है. यहां दिए गए उदाहरण में, GoogleAdsService.SearchStream तरीके का इस्तेमाल करके, कैंपेन की रिपोर्ट चलाने का तरीका बताया गया है. इससे आपके खाते में मौजूद कैंपेन को वापस पाया जा सकता है. इस गाइड में, रिपोर्टिंग के बारे में जानकारी नहीं दी गई है.
curl -i -X POST \
https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "login-customer-id: LOGIN_CUSTOMER_ID" \
--data-binary "@query.json"query.json में मौजूद कॉन्टेंट यहां दिया गया है:
{
"query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}