एपीआई की अनुमति

इस दस्तावेज़ में, होटल के एपीआई (जैसे, Travel Partner API और Price Feeds API) को ऐक्सेस करते समय, अपने ऐप्लिकेशन में OAuth2.0 सेट अप करने के लिए चरण-दर-चरण निर्देश दिए गए हैं. अपने ऐप्लिकेशन को अनुमति देने के लिए, OAuth 2.0 का इस्तेमाल करके, Google API को ऐक्सेस करना लेख पढ़ें.

OAuth 2.0 सेटअप करना

OAuth 2.0 के लिए, आपको अपने Google खाते से जुड़े सेवा खाते का इस्तेमाल करके अपनी पहचान की पुष्टि करनी होगी. सेवा खाता, OAuth 2.0 ऐक्सेस टोकन के बदले आपकी निजी कुंजी भेजता है. इसके बाद, इस टोकन का इस्तेमाल होटल के एपीआई को कॉल करने के लिए किया जा सकता है. इससे रीड-ओनली डेटा ऐक्सेस किया जा सकता है. जैसे, होटल के किराये, होटल, और होटल के किराये वाले फ़ीड के बारे में डाइग्नोस्टिक रिपोर्टिंग डेटा.

ऐक्सेस टोकन एक घंटे (3,600 सेकंड) के लिए मान्य होते हैं.

अगर आपने पहले ClientLogin लागू किया था, तो OAuth 2.0 का तरीका भी वैसा ही है. हालांकि, इसमें ये अंतर हैं:

  • आपका ऐप्लिकेशन, एपीआई को ऐक्सेस करने के लिए Google सेवा खाते का इस्तेमाल करता है.
  • एपीआई को कॉल करते समय, Authorization एचटीटीपी हेडर में OAuth 2.0 ऐक्सेस टोकन पास किया जाता है.

किसी भी Hotels API के साथ OAuth 2.0 का इस्तेमाल करने के लिए, अपना खाता सेट अप करने के लिए यह तरीका अपनाएं:

  1. Google Cloud Console में नया प्रोजेक्ट बनाना

  2. सेवा खाता और उसके क्रेडेंशियल बनाना

  3. अपने सेवा खाते को होटल के डेटा का ऐक्सेस देना

इनमें से हर चरण के बारे में, यहां दिए गए सेक्शन में बताया गया है.

पहला चरण: Google Cloud Console में नया प्रोजेक्ट बनाना

Google Cloud Console का इस्तेमाल, Google API के लिए ट्रैफ़िक डेटा, पुष्टि करने की प्रोसेस, और बिलिंग की जानकारी को मैनेज करने और देखने के लिए किया जाता है. ये Google API, आपके प्रोजेक्ट इस्तेमाल करते हैं.

Google Cloud Console में, प्रोजेक्ट, सेटिंग, क्रेडेंशियल, और उस ऐप्लिकेशन के मेटाडेटा का कलेक्शन होता है जिस पर काम किया जा रहा है. यह ऐप्लिकेशन, Google Developer API और Google Cloud संसाधनों का इस्तेमाल करता है.

Google Cloud Console का इस्तेमाल, एपीआई क्रेडेंशियल जनरेट करने, एपीआई चालू करने, और आपके प्रोजेक्ट से जुड़ी टीम और बिलिंग की जानकारी मैनेज करने के लिए भी किया जाता है.

Google Cloud Console में नया प्रोजेक्ट बनाने के लिए:

  1. अपने Gmail या Google खाते में साइन इन करें.

  2. Google Cloud console खोलें. अगर यह आपका पहला प्रोजेक्ट है, तो मुख्य व्यू में प्रोजेक्ट बनाएं बटन दिखेगा:

    fig1

  3. प्रोजेक्ट बनाएं बटन पर क्लिक करें. Google Cloud Console में, नया प्रोजेक्ट डायलॉग बॉक्स दिखता है:

    fig2

    प्रोजेक्ट का नाम इनपुट फ़ील्ड में, अपने नए प्रोजेक्ट के लिए कोई नाम डालें. फ़ील्ड के नीचे, Google Cloud Console आपके लिए एक प्रोजेक्ट आईडी जनरेट करता है. इससे यह पक्का होता है कि आईडी सभी प्रोजेक्ट के लिए यूनीक है. उदाहरण के लिए, अगर आपने "My New Project" डाला है, तो Google Cloud Console, my-new-project-266022 जैसा आईडी असाइन करता है.

  4. नया प्रोजेक्ट बनाने के लिए, बनाएं बटन पर क्लिक करें.

  5. नेविगेशन मेन्यू का इस्तेमाल करके, एपीआई और सेवाएं > डैशबोर्ड चुनें.

    fig3

    यहां दी गई इमेज में, Google Cloud Console के सबसे ऊपर बाईं ओर मौजूद नेविगेशन मेन्यू दिखाया गया है. इससे आपके प्रोजेक्ट के लिए डैशबोर्ड व्यू दिखता है:

    fig4

ज़्यादा जानकारी के लिए, प्रोजेक्ट बनाना और मैनेज करना लेख पढ़ें.

दूसरा चरण: सेवा खाता बनाना और उसके क्रेडेंशियल जनरेट करना

सेवा खातों का इस्तेमाल, सर्वर-टू-सर्वर इंटरैक्शन के लिए किया जाता है. जैसे, वेब ऐप्लिकेशन और आपके होटल के डेटा के बीच इंटरैक्शन.

सेवा खाता बनाने और उसे कॉन्फ़िगर करने के लिए:

  1. Google API Console के मुख्य व्यू में, बाईं ओर मौजूद नेविगेशन में क्रेडेंशियल पर क्लिक करें. Google Cloud Console में, क्रेडेंशियल व्यू दिखता है.

    क्रेडेंशियल व्यू में, आपके प्रोजेक्ट के लिए क्लाइंट आईडी और क्रेडेंशियल दिखते हैं. आपका ऐप्लिकेशन, OAuth 2.0 ऐक्सेस टोकन का अनुरोध करते समय क्लाइंट आईडी का इस्तेमाल करता है. नए प्रोजेक्ट में अब तक कोई क्लाइंट या क्रेडेंशियल नहीं है.

  2. एपीआई और सेवाओं में क्रेडेंशियल लिंक पर क्लिक करें.

  3. क्रेडेंशियल बनाएं बटन पर क्लिक करें. इसके बाद, फ़िल्टर से सेवा खाते की कुंजी चुनें. आपको सेवा खाता कुंजी बनाएं व्यू दिखेगा.

  4. सेवा खाता फ़िल्टर में जाकर, नया सेवा खाता चुनें.

  5. सेवा खाते का नाम और सेवा खाते का आईडी डालें.

    नाम अपनी पसंद के मुताबिक रखा जा सकता है. हालांकि, खाता आईडी सभी प्रोजेक्ट के लिए यूनीक होना चाहिए. Google Cloud Console, आपके डाले गए नाम के आधार पर आपके लिए एक यूनीक खाता आईडी जनरेट करता है.

  6. कुंजी के टाइप के लिए, JSON चुनें. JSON फ़ॉर्मैट में डेटा देना ज़रूरी है.

  7. बनाएं बटन पर क्लिक करें. Google Cloud Console, आपके प्रोजेक्ट के लिए निजी या सार्वजनिक कुंजी का जोड़ा जनरेट करता है. निजी कुंजी, उस डिफ़ॉल्ट जगह पर सेव होती है जहां आपका ब्राउज़र डाउनलोड की गई फ़ाइलें सेव करता है. आपको .JSON फ़ॉर्मैट वाली फ़ाइल डाउनलोड करनी होगी.

    अपनी स्क्रिप्ट या एपीआई ऐक्सेस करने वाले अन्य ऐप्लिकेशन में, निजी कुंजी का इस्तेमाल किया जाता है.

    कुंजियां जनरेट होने के बाद, Google Cloud Console पर "सेवा खाता बनाया गया" मैसेज दिखता है.

  8. ठीक है, समझ गया बटन पर क्लिक करें. Google Cloud Console आपको क्रेडेंशियल व्यू पर वापस ले जाता है. अपने सेवा खाते के बारे में जानकारी की पुष्टि करने और अपने प्रोजेक्ट से जुड़ा सेवा खाता देखने के लिए, इस व्यू में सेवा खाते मैनेज करें पर क्लिक करें.

    सेवा खाते से अब ये क्रेडेंशियल जुड़े हुए हैं:

    • क्लाइंट आईडी: यह एक यूनीक आइडेंटिफ़ायर होता है. OAuth 2.0 ऐक्सेस टोकन का अनुरोध करते समय, आपका ऐप्लिकेशन इसका इस्तेमाल करता है.
    • ईमेल पता: सेवा खाते के लिए जनरेट किया गया ईमेल पता. यह "account_name@project_name.google.com.iam.gserviceaccount.com" फ़ॉर्मैट में होता है.
    • सर्टिफ़िकेट फ़िंगरप्रिंट: यह उस निजी कुंजी का आईडी होता है जिसे आपने डाउनलोड किया है.

ज़्यादा जानकारी के लिए, सर्वर से सर्वर ऐप्लिकेशन के लिए OAuth 2.0 का इस्तेमाल करना लेख पढ़ें.

तीसरा चरण: सेवा खाते को Hotel Center के डेटा का ऐक्सेस देना

आखिरी चरण में, नए सेवा खाते को अपने Hotel Center खाते का ऐक्सेस दें. सेवा खाते की पहचान, जनरेट किए गए उस ईमेल पते से होती है जिसे आपने पिछले चरण में बनाया था. Hotel Center की शेयर करने की सेटिंग का इस्तेमाल करके, इस खाते का ऐक्सेस दिया जाता है.

अगर आपके पास खाते में उपयोगकर्ताओं को जोड़ने का सही ऐक्सेस नहीं है, तो हमसे संपर्क करें फ़ॉर्म का इस्तेमाल करके, Google Hotels टीम से संपर्क करें. साथ ही, अपने खाते के लिए मालिकाना हक सेट अप करने का अनुरोध करें. मालिक के तौर पर एक या उससे ज़्यादा ईमेल पतों को सेट करने का अनुरोध किया जा सकता है. Hotel Center को ऐक्सेस करने के बारे में ज़्यादा जानने के लिए, Hotel Center और Google Ads खाते को लिंक करना लेख पढ़ें.

किसी सेवा खाते को अपने Hotel Center खाते का डेटा ऐक्सेस करने की अनुमति देने के लिए:

  1. नई ब्राउज़र विंडो में, Hotel Center खोलें. fig7

  2. Google का Hotel Center बैनर पर, उपयोगकर्ता जोड़ें आइकॉन पर क्लिक करके, शेयर करने का डायलॉग बॉक्स खोलें.

    fig8

  3. और लोगों को जोड़ें फ़ील्ड में, उस सेवा खाते का ईमेल पता डालें जिसे आपको अपने Hotel Center खाते में जोड़ना है.

  4. लोगों को सूचना दें विकल्प को चुना हुआ रहने दें.

  5. फ़िल्टर में जाकर, मैनेज करें को चुनें.

  6. न्योता दें बटन पर क्लिक करें.

  7. अपने Hotel Center खाते में उपयोगकर्ताओं को जोड़ने के बाद, आपका सेवा खाता करीब 24 घंटों के अंदर एपीआई ऐक्सेस के लिए चालू हो जाना चाहिए.

जब Google आपको सूचना दे कि आपके सेवा खाते के लिए एपीआई का ऐक्सेस चालू कर दिया गया है, तब OAuth 2.0 का इस्तेमाल करके एपीआई को ऐक्सेस किया जा सकता है.

OAuth 2.0 का इस्तेमाल कैसे करें

एपीआई को ऐक्सेस करने के लिए, आपके ऐप्लिकेशन को Google के साथ अपनी पहचान शेयर करनी होगी. इसके लिए, सेवा खाते से जनरेट किया गया ईमेल पता और निजी कुंजी इस्तेमाल करें. Google का पुष्टि करने वाला सिस्टम, इस कुंजी को OAuth 2.0 ऐक्सेस टोकन के लिए एक्सचेंज करता है. इस टोकन को आपको अपने ऐप्लिकेशन के एपीआई कॉल में Authorization हेडर में पास करना होता है.

डेलिगेट किए गए एपीआई कॉल करने की तैयारी करना लेख पढ़ें.

स्कोप

होटल एपीआई के लिए, ये SCOPES हैं:

Travel Partner API: "https://www.googleapis.com/auth/travelpartner"

Price Feeds API: "https://www.googleapis.com/auth/travel-partner-price-upload"

क्रेडेंशियल बनाते समय, आपको सेवा खाते की जानकारी देनी होगी. सेवा खाता बनाना और उसके क्रेडेंशियल जनरेट करना लेख पढ़ें.

अपना ऐप्लिकेशन डेवलप करते समय, एपीआई पासकोड का इस्तेमाल करके अपने ऐप्लिकेशन की पुष्टि करने के लिए, सबसे सही तरीकों का पालन करना न भूलें. ज़्यादा जानें.

उदाहरण

from google.oauth2 import service_account
from google.auth.transport.requests import Request

# You can use a single or multiple scopes
SCOPES =
['https://www.googleapis.com/auth/travel-partner-price-upload','https://www.googleapis.com/auth/travelpartner']
SERVICE_ACCOUNT_FILE = 'service_account_key_file.json'

cred = service_account.Credentials.from_service_account_file(
                        SERVICE_ACCOUNT_FILE,
                        scopes=SCOPES)
cred.refresh(Request())
headers = {}
cred.apply(headers)

Travel Partner API

Travel Partner API की मदद से, होटल पार्टनर, Hotel Center की जानकारी पा सकते हैं. साथ ही, बड़े या जटिल खातों को मैनेज करने के लिए, Hotel Center का डेटा बदल सकते हैं.

Travel Partner API के लिए अनुमति पाने के लिए, OAUTH 2.0 सेटअप करने से जुड़े निर्देशों का पालन करें.

Travel Partners API के लिए नया प्रोजेक्ट बनाते समय, आपको अपने नए Google Cloud Console प्रोजेक्ट का ऐक्सेस चालू करना होगा.

Travel Partners API का ऐक्सेस चालू करने के लिए, यह तरीका अपनाएं:

  1. अपने प्रोजेक्ट के डैशबोर्ड व्यू पर जाएं.

  2. एपीआई और सेवाएं चालू करें पर क्लिक करें. इससे API लाइब्रेरी का वेलकम पेज दिखता है.

  3. खोज फ़ील्ड में, "Travel Partner API" टाइप करना शुरू करें. इसके बाद, कंसोल में आपके टाइप किए गए टेक्स्ट से मिलते-जुलते एपीआई की सूची दिखेगी.

  4. टेबल में, मिलते-जुलते एपीआई पर क्लिक करें. Google Cloud Console में, उस एपीआई के बारे में जानकारी दिखती है.

  5. अपने प्रोजेक्ट के लिए इस एपीआई को चालू करने के लिए, एपीआई चालू करें बटन पर क्लिक करें.

ज़्यादा जानकारी के लिए, सेवाएं चालू और बंद करना लेख पढ़ें.

आपके Google खाते के नए प्रोजेक्ट के लिए, Travel Partner API अब चालू हो गया है.

Travel Partner API का स्कोप यह है: "https://www.googleapis.com/auth/travelpartner"

Travel Partner API का एंडपॉइंट यह है: "https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"

Price Feeds API

Price Feeds API की मदद से, होटल पार्टनर हर होटल के लिए, किराये का डेटा अपनी पसंद के मुताबिक उपलब्ध करा सकते हैं. Google के साथ मिलकर काम करने वाले होटल पार्टनर, Google पर किराये की जानकारी अपलोड करते समय, OAuth2.0 का इस्तेमाल करके अपनी पहचान की पुष्टि कर सकते हैं और खुद को अनुमति दे सकते हैं. Price Feeds API के लिए अनुमति पाने के लिए, OAUTH 2.0 सेटअप करने से जुड़े निर्देशों का पालन करें.

ध्यान रखने वाली बातें

Price Feeds API के लिए, अनुमति देने से जुड़े निर्देशों में मौजूद अहम अंतरों को ध्यान में रखें.

  1. पार्टनर को Google Cloud Console में, Price Feeds OAuth2.0 का नया प्रोजेक्ट बनाना चाहिए. इसके लिए, OAuth 2.0 सेटअप में दिए गए निर्देशों का पालन करें.

  2. Google Cloud Console में Price Feeds API को चालू करना ज़रूरी नहीं है और इसे अनदेखा किया जा सकता है. आपको सिर्फ़ एक सेवा खाते और कुंजी की ज़रूरत होती है. इसके बाद, इसी सेवा खाते और कुंजी का इस्तेमाल करके, Price Feeds प्रोजेक्ट को अपने Hotel Center डेटा का ऐक्सेस दें. अपने एपीआई को कॉन्फ़िगर करने के लिए, OAuth2.0 सेटअप में दिए गए बाकी चरणों को पूरा करें.

कीमत की जानकारी वाले फ़ीड के लिए OAuth2.0 ऐक्सेस टोकन पाना

अगला चरण, सेवा खाते की कुंजी वाली फ़ाइल का इस्तेमाल करके, ठहरने की जगह के किराये की जानकारी अपलोड करने के स्कोप के साथ OAuth2.0 ऐक्सेस टोकन पाना है. डेलिगेट किए गए एपीआई कॉल करने की तैयारी करना में दिए गए निर्देशों का पालन करके, अपने Price Feeds प्रोजेक्ट के अनुरोधों को अनुमति दी जा सकती है. इसके बाद, हासिल किए गए क्रेडेंशियल से ऐक्सेस टोकन निकालें और उसे "Authorization" एचटीटीपी हेडर में सेट करें.

होटल के किराये की जानकारी अपलोड करने का दायरा यह है: "https://www.googleapis.com/auth/travel-partner-price-upload"

किमतें अपलोड करना

ऐक्सेस टोकन मिलने के बाद, पार्टनर अपने किराये का फ़ीड अपलोड कर सकते हैं. इसके लिए, उन्हें पुष्टि करने और अनुमति देने के लिए स्टैटिक आईपी का इस्तेमाल करना होगा. हालांकि, उन्हें इसमें ये बदलाव करने होंगे:

  • "Authorization" एचटीटीपी हेडर में ऐक्सेस टोकन सेट करना
curl -X POST -H "Authorization: Bearer <access token>"
www.google.com/travel/lodging/uploads/accounts/<account_id>/ota/hotel_rate_amount_notif --data-binary @<price_feed_file_location>

Price Feeds API के लिए OAuth2.0 सेटअप की जांच करना

OAuth 2.0 सेटअप की जांच करने के लिए, अपलोड के किसी भी पाथ पर खाली फ़ाइल अपलोड करें या असली कीमतों का डेटा अपलोड करें. एचटीटीपी रिस्पॉन्स का स्टेटस देखने के लिए, इस टेबल का इस्तेमाल करें.

एचटीटीपी रिस्पॉन्स का स्टेटस मैसेज
200 Successful (OK)
401 Service account creation or access token fetch was not successful
403 Service account access wasn't granted to the Hotel Center account or both the service account key and access token has expired

समस्या का हल

क्या आपको कोई समस्या आ रही है? इन आइटम की तुरंत जांच करने से, समस्या हल हो सकती है.

  1. क्या आपने Google Cloud Console में कोई प्रोजेक्ट बनाया है?
  2. क्या आपने अपने प्रोजेक्ट में सेवा चालू की है?
  3. क्या आपने .JSON फ़ाइल डाउनलोड की है? यह एक निजी पासकोड होता है. इसे डाउनलोड करने के लिए, क्लाइंट आईडी बनाएं पर क्लिक करें और फिर सेवा खाता चुनें.
  4. क्या आपको इस फ़ॉर्म में सेवा खाते का क्लाइंट आईडी ईमेल पता मिला है: nnnnnnn@app_name.google.com.iam.gserviceaccount.com?
  5. क्या आपने इस खाते को शेयर करें बटन पर क्लिक करके, अपने Hotel Ads Center खाते को सेवा खाते के साथ शेयर किया है?
  6. क्या आपने सेवा खाते का ईमेल पता और अपना पार्टनर आईडी, अपने तकनीकी खाता मैनेजर (टीएएम) को भेजा है?
  7. क्या आपके एपीआई कॉल, Authorization हेडर में हाल ही में मिला टोकन पास कर रहे हैं?
  8. क्या आपका टोकन एक घंटे से ज़्यादा पुराना है?

यहां दी गई टेबल में, कुछ सामान्य गड़बड़ियों और उन्हें ठीक करने के तरीके बताए गए हैं:

गड़बड़ी ब्यौरा
Invalid credentials इसका मतलब कई चीज़ें हो सकती हैं. अगर आपको यह गड़बड़ी दिखती है, तो: पक्का करें कि:
  • आपने मान्य बियरर टोकन के साथ Authorization हेडर दिया है.
  • बियरर टोकन को बने हुए एक घंटा नहीं हुआ है. टोकन सिर्फ़ एक घंटे के लिए मान्य होता है.
  • आपने पार्टनर का सही नाम (partner क्वेरी स्ट्रिंग पैरामीटर के साथ) दिया हो. वैल्यू के तौर पर, आपको अपना यूनीक पार्टनर आईडी डालना होगा. Hotel Ads Center में दिखने वाला पार्टनर का नाम नहीं डालना है. अगर आपको अपना पार्टनर आईडी नहीं पता है, तो अपने टेक्निकल खाता मैनेजर (टीएएम) से संपर्क करें.
Not found ऐसा हो सकता है कि आपका एंडपॉइंट गलत हो. देखें कि आपने GET अनुरोध सबमिट किया हो. साथ ही, अनुरोध किया गया यूआरएल मान्य हो. इसका मतलब है कि वह उस एपीआई के सिंटैक्स के मुताबिक हो जिसे ऐक्सेस करने की कोशिश की जा रही है.
Invalid string value एंडपॉइंट के एक या उससे ज़्यादा हिस्सों में अमान्य सिंटैक्स मौजूद है. उदाहरण के लिए, हो सकता है कि आपने पाथ के किसी हिस्से की स्पेलिंग गलत लिखी हो. देखें कि आपने पूरे पाथ में सही अंडरस्कोर, कैपिटल लेटर, और शब्दों का इस्तेमाल किया हो.
Unsupported output format यह गड़बड़ी आम तौर पर, Reports API का इस्तेमाल करते समय होती है. आपको GET के यूआरएल में "alt=csv" को शामिल करना होगा. Reports API, JSON फ़ॉर्मैट के साथ काम नहीं करता.
AccessTokenRefreshError/Invalid grant ऐप्लिकेशन चलाते समय, यह गड़बड़ी इन वजहों से हो सकती है:
  • आपके सेवा खाते का ईमेल पता गलत है. Google Cloud Console में जाकर, ईमेल खाते की जांच करें. साथ ही, पक्का करें कि उसे आपके एपीआई को ऐक्सेस करने की अनुमति मिली हो.
  • ईमेल पते के पास एपीआई का ऐक्सेस नहीं है. देखें कि क्या ईमेल पते को, Hotel Center के ज़रिए शेयर किए गए होटल के डेटा को ऐक्सेस करने की अनुमति है.
  • कुंजी फ़ाइल, सेवा खाते के लिए सही नहीं है. Google Cloud Console का इस्तेमाल करके, नया .JSON सर्टिफ़िकेट डाउनलोड करें. साथ ही, यह पक्का करें कि आपका ऐप्लिकेशन सही सर्टिफ़िकेट की ओर पॉइंट कर रहा हो.
HotelAdsAPIConnection object has no attribute credentials ऐप्लिकेशन चलाते समय, आपकी .JSON फ़ाइल का पाथ गलत है.
Invalid scope ऐप्लिकेशन चलाते समय, आपके एपीआई का स्कोप इनमें से कोई एक होना चाहिए:
  • "https://www.googleapis.com/auth/travelpartner"
  • "https://www.googleapis.com/auth/travel-partner-price-upload"
Forbidden आपने जिस खाते के आईडी का इस्तेमाल किया है उसे ऐक्सेस करने की अनुमति आपके पास नहीं है. अगर आपके पास उप-खाते का मालिकाना हक है, तो हो सकता है कि आपके पास पैरंट या रूट खाते के आईडी का ऐक्सेस न हो.