सेवा खाते के वर्कफ़्लो की तरह ही, एक उपयोगकर्ता के लिए पुष्टि करने की प्रोसेस में, Google Ads के यूज़र इंटरफ़ेस (यूआई) की ओर से दी जाने वाली अनुमति और उपयोगकर्ता को मैनेज करने की सुविधाओं का इस्तेमाल किया जाता है. इससे ऐप्लिकेशन को सभी ज़रूरी खातों का ऐक्सेस मिलता है. पुष्टि करने के इस वर्कफ़्लो में दो चरण होते हैं:
- आपने किसी एक उपयोगकर्ता को उन सभी Google Ads खातों का ऐक्सेस दिया हो जिन्हें ऐप्लिकेशन से मैनेज किया जाना है.
- उपयोगकर्ता, आपके ऐप्लिकेशन को अपने Google Ads खातों को मैनेज करने की अनुमति देता है. इससे ऐप्लिकेशन को सभी Google Ads खातों का ऐक्सेस मिल जाता है.
सिर्फ़ एक उपयोगकर्ता के शामिल होने की वजह से, OAuth 2.0 की मदद से उपयोगकर्ता की पहचान की पुष्टि करने का फ़्लो बनाने के बजाय, gcloud CLI या GenerateUserCredential कोड का उदाहरण जैसे टूल का इस्तेमाल किया जा सकता है.
इस वर्कफ़्लो का इस्तेमाल, ऐसे मामलों में भी किया जा सकता है जब आपके खातों को कुछ ही लोगों के लॉगिन से ऐक्सेस किया जा सकता हो.उदाहरण के लिए, तीन से चार लोग. ऐसे में, OAuth की मदद से उपयोगकर्ता की पुष्टि करने वाले पूरे वर्कफ़्लो को बनाने में लगने वाली मेहनत, gcloud CLI जैसे कमांड लाइन टूल का इस्तेमाल करके तीन से चार लोगों के लिए अनुमति पाने में लगने वाली मेहनत की तुलना में ज़्यादा होती है.
कमियां
सेवा खाते के वर्कफ़्लो की तुलना में, इस फ़्लो के कुछ नुकसान हैं:
- उपयोगकर्ता की पुष्टि करने के वर्कफ़्लो के लिए, आपको Google Cloud Console में OAuth 2.0 क्लाइंट आईडी और सीक्रेट बनाना होगा. इसके लिए, सेवा खाता और कुंजी बनाने की तुलना में, कॉन्फ़िगरेशन के ज़्यादा चरणों की ज़रूरत होती है.
- आपके ऐप्लिकेशन को Google Cloud ऐप्लिकेशन की पुष्टि करने की एक और प्रोसेस से गुज़रना पड़ सकता है.
- अगर अनुमति पा चुका उपयोगकर्ता टीम या कंपनी छोड़ देता है, तो हो सकता है कि आपके खातों से उपयोगकर्ता को हटाने या उसके खाते को बंद करने पर, आपका ऐप्लिकेशन काम न करे. सेवा खाते, किसी व्यक्ति से नहीं जुड़े होते. इसलिए, इस जोखिम से बचा जा सकता है.
- Google Ads खाते को अनुमति देने वाले उपयोगकर्ता को ज़्यादा सावधानी बरतनी चाहिए. जैसे, दो चरणों में पुष्टि करने की सुविधा चालू करना. इससे वह अपने Google खाते को सुरक्षा से जुड़ी कमियों, मैलवेयर या फ़िशिंग की वजह से हैक होने से बचा सकता है. सेवा खातों में इस समस्या के होने की आशंका कम होती है, क्योंकि हमले के कुछ तरीके उन पर सीधे तौर पर लागू नहीं होते.
क्रेडेंशियल जनरेट करना
अपने ऐप्लिकेशन के लिए, OAuth सहमति स्क्रीन को कॉन्फ़िगर करने के लिए निर्देशों का पालन करें. साथ ही,
https://www.googleapis.com/auth/adwords
को OAuth 2.0 स्कोप के तौर पर जोड़ें.निर्देशों का पालन करके, क्लाइंट आईडी और क्लाइंट सीक्रेट बनाएं. OAuth 2.0 क्लाइंट बनाने के बाद, क्लाइंट की JSON फ़ाइल डाउनलोड करें. इसके लिए, सबसे पहले 'OAuth क्लाइंट डाउनलोड करें' आइकॉन पर क्लिक करें. इसके बाद, अगली स्क्रीन पर मौजूद 'JSON डाउनलोड करें' बटन पर क्लिक करें. फ़ाइल को
credentials.json
के तौर पर सेव करें.उस उपयोगकर्ता खाते की पहचान करें जिसके पास उन सभी Google Ads खातों का ऐक्सेस हो जिन्हें आपको अपने ऐप्लिकेशन का इस्तेमाल करके मैनेज करना है. अगर कुछ खातों का ऐक्सेस नहीं है, तो ज़रूरी ऐक्सेस देने के लिए निर्देशों का पालन करें.
gcloud सीएलआई को डाउनलोड और इंस्टॉल करें. इंस्टॉल करने के बाद, पुष्टि करें कि टूल सही तरीके से काम कर रहा है या नहीं. इसके लिए, कमांड-लाइन प्रॉम्प्ट से
gcloud version
कमांड चलाएं. आउटपुट ऐसा दिख सकता है.:~$ gcloud version Google 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 gsutil 5.30
gcloud सीएलआई टूल चलाकर, OAuth 2.0 रीफ़्रेश टोकन जनरेट करें:
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.json>credentials.json
फ़ाइल, पिछले चरण से मिली है.gcloud
कमांड, नई ब्राउज़र विंडो में 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" }
क्लाइंट लाइब्रेरी का कॉन्फ़िगरेशन
अपनी क्लाइंट लाइब्रेरी को कॉन्फ़िगर करने के तरीके के बारे में निर्देश पाने के लिए, अपनी प्रोग्रामिंग भाषा से जुड़ा टैब चुनें.
Java
अपनी ads.properties
फ़ाइल में, यहां दी गई कुंजियां कॉन्फ़िगर करें.
api.googleads.clientId=INSERT_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
अन्य विकल्पों के लिए, कॉन्फ़िगरेशन गाइड देखें.
.NET
आपके पास रनटाइम के दौरान, अपने GoogleAdsClient
इंस्टेंस को शुरू करने का विकल्प होता है. इसके लिए, आपको उन क्रेडेंशियल का इस्तेमाल करना होगा जो आपने उस उपयोगकर्ता से लिए हैं जिसके खातों के लिए आपको एपीआई कॉल करने हैं.
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.APPLICATION,
OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID",
OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET",
OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN",
...
};
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_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
अन्य विकल्पों के लिए, कॉन्फ़िगरेशन गाइड देखें.
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_CLIENT_ID_HERE' c.client_secret = 'INSERT_CLIENT_SECRET_HERE' c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE' c.developer_token = 'INSERT_DEVELOPER_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://www.googleapis.com/oauth2/v3/token
अब अपने एपीआई कॉल में ऐक्सेस टोकन का इस्तेमाल किया जा सकता है. यहां दिए गए उदाहरण में बताया गया है कि GoogleAdsService.SearchStream
तरीके का इस्तेमाल करके, कैंपेन की रिपोर्ट कैसे जनरेट की जाती है. इस तरीके से, आपके खाते में मौजूद कैंपेन की जानकारी मिलती है. इस गाइड में, रिपोर्टिंग के बारे में जानकारी नहीं दी गई है.
curl -i -X POST https://googleads.googleapis.com/v21/customers/CUSTOMER_ID/googleAds:searchStream \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "developer-token: DEVELOPER_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"
}