एक उपयोगकर्ता के लिए पुष्टि करने का वर्कफ़्लो

सिंगल यूज़र ऑथेंटिकेशन फ़्लो, सर्विस खाते के वर्कफ़्लो की तरह ही काम करता है. यह Google Ads के यूज़र इंटरफ़ेस (यूआई) में मौजूद, अनुमति देने और उपयोगकर्ता को मैनेज करने की सुविधाओं का इस्तेमाल करके, ऐप्लिकेशन को ज़रूरी सभी खातों का ऐक्सेस देता है. इस ऑथेंटिकेशन वर्कफ़्लो में दो चरण होते हैं:

  • आपको किसी एक उपयोगकर्ता को Google Ads के उन सभी खातों का ऐक्सेस देना होगा जिन्हें ऐप्लिकेशन मैनेज करेगा.
  • उपयोगकर्ता, आपके ऐप्लिकेशन को अपनी ओर से Google Ads खातों को मैनेज करने की अनुमति देता है. इससे ऐप्लिकेशन को Google Ads के सभी खातों का ऐक्सेस मिल जाता है.

इसमें सिर्फ़ एक उपयोगकर्ता शामिल होता है. इसलिए, OAuth 2.0 का अपना उपयोगकर्ता ऑथेंटिकेशन फ़्लो बनाने के बजाय, gcloud सीएलआई या GenerateUserCredential कोड के उदाहरण जैसे टूल का इस्तेमाल किया जा सकता है.

इस वर्कफ़्लो का एक और इस्तेमाल तब किया जाता है, जब आपके खातों को कुछ उपयोगकर्ता लॉगिन के ज़रिए ऐक्सेस किया जा सकता है.जैसे, तीन से चार उपयोगकर्ता. ऐसे में, OAuth उपयोगकर्ता ऑथेंटिकेशन का पूरा वर्कफ़्लो बनाने में लगने वाली मेहनत, gcloud सीएलआई जैसे कमांड लाइन टूल का इस्तेमाल करके, तीन से चार उपयोगकर्ताओं के लिए अनुमति हासिल करने में लगने वाली मेहनत से ज़्यादा होती है.

कमियां

सर्विस खाते के वर्कफ़्लो की तुलना में, इस फ़्लो के कुछ नुकसान हैं:

  1. उपयोगकर्ता ऑथेंटिकेशन वर्कफ़्लो के लिए, आपको Google Cloud Console में OAuth 2.0 क्लाइंट आईडी और सीक्रेट बनाना होगा. इसके लिए, सर्विस खाता और कुंजी बनाने की तुलना में, ज़्यादा कॉन्फ़िगरेशन चरणों की ज़रूरत होती है.
  2. आपके ऐप्लिकेशन को, Google Cloud App की पुष्टि करने की एक और प्रोसेस से गुज़रना पड़ सकता है.
  3. अगर अनुमति पाने वाला उपयोगकर्ता टीम या कंपनी छोड़ देता है, तो आपके खातों से उस उपयोगकर्ता को हटाने या उपयोगकर्ता खाते को बंद करने पर, आपका ऐप्लिकेशन काम करना बंद कर सकता है. सर्विस खाते, किसी एक उपयोगकर्ता से जुड़े नहीं होते. इसलिए, इस जोखिम से बचा जा सकता है.
  4. Google Ads खाते को अनुमति देने वाले उपयोगकर्ता को ज़्यादा सावधानी बरतनी चाहिए. जैसे, दो चरणों में पुष्टि की सुविधा चालू करना. इससे, सुरक्षा में कमी, मैलवेयर या फ़िशिंग की वजह से, उसके Google खाते से समझौता होने से बचाया जा सकता है. सर्विस खाते, इस समस्या के लिए कम संवेदनशील होते हैं, क्योंकि हमले के कुछ तरीके उन पर सीधे लागू नहीं होते.

क्रेडेंशियल जनरेट करना

  1. अपने ऐप्लिकेशन के लिए, OAuth के लिए सहमति की स्क्रीन को कॉन्फ़िगर करने के लिए, निर्देशों का पालन करें. साथ ही, OAuth 2.0 स्कोप के तौर पर, https://www.googleapis.com/auth/adwords जोड़ें. ज़्यादा जानकारी के लिए, OAuth के लिए सहमति की स्क्रीन सेट अप करना लेख देखें.

  2. निर्देशों का पालन करके, क्लाइंट आईडी और क्लाइंट सीक्रेट बनाएं. OAuth 2.0 क्लाइंट बनाने के बाद, क्लाइंट की JSON फ़ाइल डाउनलोड करें. इसके लिए, पहले उसके 'OAuth क्लाइंट डाउनलोड करें' आइकॉन पर क्लिक करें. इसके बाद, अगली स्क्रीन पर मौजूद, 'JSON डाउनलोड करें' बटन पर क्लिक करें. फ़ाइल को credentials.json के तौर पर सेव करें.

  3. कोई ऐसा उपयोगकर्ता खाता चुनें जिसके पास Google Ads के उन सभी खातों का ऐक्सेस हो जिन्हें आपको अपने ऐप्लिकेशन का इस्तेमाल करके मैनेज करना है. अगर ऐसे खाते हैं जिनका ऐक्सेस नहीं है, तो ज़रूरी ऐक्सेस देने के लिए, निर्देशों का पालन करें.

  4. 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
  5. 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 फ़ाइल, पिछले चरण में बनाई गई है.

  6. gcloud कमांड, नए ब्राउज़र विंडो में Google खाते में लॉगिन करने की विंडो खोलता है. साथ ही, आपको OAuth 2.0 ऑथेंटिकेशन के चरणों के बारे में बताता है. पक्का करें कि आपने पिछले चरणों में चुने गए उपयोगकर्ता के तौर पर साइन इन किया हो. अगर आपका ऐप्लिकेशन, पुष्टि नहीं किया गया है, तो आपको चेतावनी वाली स्क्रीन दिख सकती है. ऐसे मामलों में, बेहतर सेटिंग दिखाएं लिंक पर क्लिक करना और PROJECT_NAME पर जाएं (पुष्टि नहीं की गई) विकल्प पर क्लिक करना सुरक्षित है.

  7. स्कोप की पुष्टि करने के बाद, अनुमति देने के लिए जारी रखें बटन पर क्लिक करें. ब्राउज़र, 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/v24/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"
}