सेवा खाते के वर्कफ़्लो की तरह ही, सिंगल-यूज़र ऑथेंटिकेशन फ़्लो, Google Ads के यूज़र इंटरफ़ेस (यूआई) से मिलने वाली अनुमति और उपयोगकर्ता मैनेजमेंट की सुविधाओं का इस्तेमाल करता है. इससे ऐप्लिकेशन को सभी ज़रूरी खातों का ऐक्सेस मिलता है. पुष्टि करने के इस वर्कफ़्लो में दो चरण होते हैं:
- आपने किसी एक उपयोगकर्ता को उन सभी Google Ads खातों का ऐक्सेस दिया हो जिन्हें ऐप्लिकेशन से मैनेज किया जाना चाहिए.
- उपयोगकर्ता आपके ऐप्लिकेशन को अपनी ओर से अपने Google Ads खातों को मैनेज करने की अनुमति देता है. इससे ऐप्लिकेशन को सभी Google Ads खातों का ऐक्सेस मिल जाता है.
इसमें सिर्फ़ एक उपयोगकर्ता शामिल होता है. इसलिए, अपना OAuth 2.0 उपयोगकर्ता पुष्टि फ़्लो बनाने के बजाय, gcloud सीएलआई या GenerateUserCredential कोड के उदाहरण जैसे टूल का इस्तेमाल किया जा सकता है.
इस वर्कफ़्लो का इस्तेमाल तब किया जा सकता है, जब आपके खातों को कुछ उपयोगकर्ताओं (उदाहरण के लिए, तीन से चार उपयोगकर्ता) के लॉगिन से ऐक्सेस किया जा सकता हो. ऐसे में, OAuth के ज़रिए डिवाइस के एक से ज़्यादा उपयोगकर्ताओं की पुष्टि करने वाले वर्कफ़्लो को बनाने में लगने वाली मेहनत, gcloud सीएलआई जैसे कमांड-लाइन टूल का इस्तेमाल करके तीन से चार उपयोगकर्ताओं के लिए अनुमति पाने में लगने वाली मेहनत की तुलना में ज़्यादा होती है.
कमियां
सेवा खाते के वर्कफ़्लो की तुलना में, इस फ़्लो के कुछ नुकसान हैं:
- उपयोगकर्ता की पुष्टि करने वाले वर्कफ़्लो के लिए, आपको Google API Console में OAuth 2.0 क्लाइंट आईडी और सीक्रेट बनाना होगा. इसके लिए, सेवा खाता और कुंजी बनाने के मुकाबले, कॉन्फ़िगरेशन के ज़्यादा चरणों की ज़रूरत होती है.
- अगर अनुमति वाला उपयोगकर्ता टीम या कंपनी छोड़ देता है, तो हो सकता है कि आपका ऐप्लिकेशन काम करना बंद कर दे. ऐसा तब हो सकता है, जब उपयोगकर्ता को आपके खातों से हटा दिया जाए या उसका खाता बंद कर दिया जाए. सेवा खाते, अलग-अलग उपयोगकर्ताओं से नहीं जुड़े होते हैं. इसलिए, इस जोखिम से बचा जा सकता है.
- मैलवेयर या फ़िशिंग से खाते को सुरक्षित रखने के लिए, Google Ads खाते को अनुमति देने वाले उपयोगकर्ता को OAuth 2.0 रीफ़्रेश टोकन जनरेट करते समय, पासकी की मदद से पुष्टि करनी होगी. सेवा खातों के लिए पासकी की ज़रूरत नहीं होती. साथ ही, इन पर फ़िशिंग जैसे हमलों का खतरा कम होता है.
क्रेडेंशियल जनरेट करना
अपने ऐप्लिकेशन के लिए, ऐसी स्क्रीन कॉन्फ़िगर करें जहां OAuth के लिए सहमति दी जाती है. साथ ही, OAuth 2.0 के दायरे के तौर पर
https://www.googleapis.com/auth/adwordsको जोड़ें. ज़्यादा जानकारी के लिए, 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 सीएलआई टूल चलाकर, OAuth 2.0 रीफ़्रेश टोकन जनरेट करें.--client-id-fileपैरामीटर को पास करना ज़रूरी है, ताकि रीफ़्रेश टोकन, gcloud सीएलआई के डिफ़ॉल्ट प्रोजेक्ट के बजाय, आपके Google API Console प्रोजेक्ट के तहत जारी किया जाए: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/v26/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"
}