अपने ऐप्लिकेशन को अनुमति देने के लिए, OAuth 2.0 का इस्तेमाल करें जब Hotel API ऐक्सेस करते हैं.
OAuth 2.0 सेटअप
OAuth 2.0 के लिए ज़रूरी है कि आप सेवा खाते का इस्तेमाल करके अपनी पहचान बताएं आपके Google खाते से जुड़ा है. सेवा खाता आपका निजी डेटा कुंजी के बदले में, OAuth 2.0 ऐक्सेस टोकन का इस्तेमाल कर सकते हैं. इसके बाद, इस टोकन का इस्तेमाल यहां किया जा सकता है: रीड-ओनली डेटा, जैसे कि किराया, होटल, और होटल के किराये के फ़ीड की परफ़ॉर्मेंस से जुड़ी रिपोर्टिंग का डेटा.
एक घंटे (3,600 सेकंड) तक के लिए ऐक्सेस टोकन काम करते हैं.
अगर ClientLogin को पहले लागू किया गया था, तो OAuth 2.0 का तरीका मिलता-जुलता है. इनमें ये अंतर होते हैं:
- आपका ऐप्लिकेशन, एपीआई को ऐक्सेस करने के लिए Google सेवा खाते का इस्तेमाल करता है.
- जब आप
Authorization
एचटीटीपी हेडर में OAuth 2.0 ऐक्सेस टोकन पास करते हैं, तो कॉलिंग API.
Travel Partner API के साथ OAuth 2.0 का इस्तेमाल करने के लिए, अपना खाता सेट अप करने के लिए यह तरीका अपनाएं:
इनमें से हर चरण के बारे में आगे आने वाले सेक्शन में बताया गया है.
पहला चरण: नया DevConsole प्रोजेक्ट बनाना
Google Developers Console ('DevConsole'), Google का डेवलपर अनुभव है ट्रैफ़िक डेटा, प्रमाणीकरण और बिलिंग जानकारी प्रबंधित करने और देखने के लिए का इस्तेमाल किया जा सकता है.
DevConsole में, प्रोजेक्ट सेटिंग, क्रेडेंशियल, और उस ऐप्लिकेशन या ऐप्लिकेशन के बारे में मेटाडेटा जिस पर आप काम कर रहे हैं जो Google Developer API और Google Cloud के संसाधनों का इस्तेमाल करता है.
DevConsole वह जगह है जहां अपने प्रोजेक्ट के इन पहलुओं को मैनेज किया जाता है, जैसे एपीआई क्रेडेंशियल जनरेट करना, एपीआई चालू करना, और टीम और बिलिंग मैनेज करना आपके प्रोजेक्ट से जुड़ी जानकारी.
नया DevConsole प्रोजेक्ट बनाने के लिए:
अपने Gmail/Google खाते में साइन इन करें.
Google Developer Console खोलें. अगर यह आपका पहला प्रोजेक्ट है, तो मुख्य व्यू में सामान्य प्रोजेक्ट बनाएं बटन:
प्रोजेक्ट बनाएं बटन पर क्लिक करें. DevConsole नया प्रोजेक्ट डायलॉग बॉक्स:
प्रोजेक्ट के नाम में अपने नए प्रोजेक्ट के लिए कोई दोस्ताना नाम डालें इनपुट फ़ील्ड. फ़ील्ड के नीचे, DevConsole आपके लिए एक प्रोजेक्ट आईडी जनरेट करता है, यह पक्का करना कि हर प्रोजेक्ट के लिए आईडी यूनीक हो. उदाहरण के लिए, अगर "मेरा नया प्रोजेक्ट" डालें, तो DevConsole एक आईडी असाइन करता है, जैसे कि
my-new-project-266022
.नया प्रोजेक्ट बनाने के लिए, बनाएं बटन पर क्लिक करें.
नेविगेशन मेन्यू का इस्तेमाल करके, एपीआई और सेवाएं > डैशबोर्ड पर जाएं.
नीचे दी गई इमेज में पेज के ऊपर बाईं ओर नेविगेशन मेन्यू दिखाया गया है. DevConsole. इससे आपको अपने प्रोजेक्ट का डैशबोर्ड व्यू दिखेगा:
ज़्यादा जानकारी के लिए, डेवलपर में प्रोजेक्ट मैनेज करना कंसोल पर क्लिक करें.
जब कोई नया प्रोजेक्ट बनाया जाता है, तो उसके साथ फ़िलहाल कोई एपीआई नहीं जुड़ा है. इस तो आपको अपने नए प्रोजेक्ट के लिए Travel Partner API को चालू करना होगा.
दूसरा चरण: नए प्रोजेक्ट के लिए Travel Partner API चालू करना
होटल एपीआई का इस्तेमाल करने के लिए, आपको अपने नए DevConsole प्रोजेक्ट में Travel Partner API चालू करना होगा.
अपने नए प्रोजेक्ट के लिए होटल एपीआई चालू करने के लिए:
ऊपर बताए गए तरीके से, अपने प्रोजेक्ट के डैशबोर्ड व्यू पर जाएं.
एपीआई और सेवाएं चालू करें पर क्लिक करें. इससे एपीआई लाइब्रेरी में वेलकम मैसेज दिखता है करें.
खोज फ़ील्ड में, Travel Partner API टाइप करें. Google API Console, एपीआई की ऐसी सूची दिखाता है जो आपके टाइप किए गए टेक्स्ट से मैच करती है.
मिलते-जुलते एपीआई की टेबल में, Travel Partner API पर क्लिक करें. DevConsole एपीआई के बारे में जानकारी दिखाता है.
अपने प्रोजेक्ट के लिए इस एपीआई को चालू करने के लिए, एपीआई चालू करें बटन पर क्लिक करें.
ज़्यादा जानकारी के लिए, यह लेख पढ़ें: चालू करना और बंद करना APIs.
आपके Google खाते के नए प्रोजेक्ट के लिए, Hotel API की सुविधा चालू कर दी गई है.
अगला कदम, सेवा खाता बनाना और उसके लिए कुंजियां जनरेट करना है.
तीसरा चरण: सेवा खाता बनाना और उसके क्रेडेंशियल जनरेट करना
सेवा खातों का इस्तेमाल सर्वर-टू-सर्वर इंटरैक्शन के लिए किया जाता है. उदाहरण के लिए, इन दोनों के बीच होने वाले इंटरैक्शन के बीच आपके होटल का डेटा और आपके होटल का डेटा.
सेवा खाता बनाने और कॉन्फ़िगर करने के लिए:
Google API कंसोल के मुख्य व्यू में, इसमें क्रेडेंशियल पर क्लिक करें: क्लिक करें. DevConsole क्रेडेंशियल व्यू दिखाता है.
क्रेडेंशियल व्यू में आपके प्रोजेक्ट. किसी OAuth 2.0 ऐक्सेस टोकन. नए प्रोजेक्ट में कोई क्लाइंट या क्रेडेंशियल नहीं होगा न करें.
एपीआई और सेवाओं में क्रेडेंशियल लिंक पर क्लिक करें.
क्रेडेंशियल बनाएं बटन पर क्लिक करें और सेवा खाता कुंजी चुनें चुनें. आपको सेवा खाते की कुंजी बनाएं व्यू दिखेगा.
सेवा खाता ड्रॉपडाउन से, नया सेवा खाता चुनें.
सेवा खाते का नाम और सेवा खाता आईडी डालें.
नाम में अपनी पसंद का कोई भी नाम हो सकता है, लेकिन खाता आईडी यूनीक होना चाहिए सभी प्रोजेक्ट की समीक्षा करता है. DevConsole आपके लिए एक यूनीक खाता आईडी जनरेट करेगा, आपके द्वारा डाले गए नाम के आधार पर.
कुंजी के टाइप के लिए P12 चुनें, जैसा कि नीचे दिखाया गया है. P12 ज़रूरी है.
बनाएं बटन पर क्लिक करें. DevConsole निजी/सार्वजनिक कुंजी का जोड़ा जनरेट करता है आपके प्रोजेक्ट के लिए. निजी कुंजी को उस डिफ़ॉल्ट जगह पर सेव किया जाता है जहां आपका ब्राउज़र डाउनलोड स्टोर करता है. आपको वेब ब्राउज़र पर
.json
फ़ाइल फ़ॉर्मैट के उलट,.p12
फ़ॉर्मैट (बाइनरी).आप अपनी स्क्रिप्ट या उन अन्य ऐप्लिकेशन में निजी कुंजी का इस्तेमाल करते हैं जिन्हें ऐक्सेस किया जाता है Travel Partner API.
यह प्रोसेस पूरी होने के बाद, DevConsole नीचे दी गई सूचना दिखाता है कुंजियां:
ठीक है, समझ लिया बटन पर क्लिक करें. DevConsole आपको क्रेडेंशियल दृश्य. अपने सेवा खाते से जुड़ी जानकारी की पुष्टि करने के लिए और अपने प्रोजेक्ट से जुड़े सेवा खाते देखें, फिर मैनेज करें सेवा खाते देखें.
सेवा खाते में अब ये क्रेडेंशियल मौजूद हैं:
- क्लाइंट आईडी: एक ऐसा यूनीक आइडेंटिफ़ायर जिसका इस्तेमाल आपका ऐप्लिकेशन तब करता है, जब ने OAuth 2.0 ऐक्सेस टोकन के लिए अनुरोध किया है.
- ईमेल पता: सेवा खाते के लिए जनरेट किया गया ईमेल पता. फ़ॉर्म "account_name@account_name.google.com.iam.gserviceaccount.com".
- सर्टिफ़िकेट के फ़िंगरप्रिंट: उस निजी पासकोड का आईडी जिसे आपने सर्टिफ़िकेट दिया है डाउनलोड किया गया.
ज़्यादा जानकारी के लिए, सर्वर के लिए OAuth 2.0 का इस्तेमाल करके सर्वर ऐप्लिकेशन.
चौथा चरण: सेवा खाते को अपने Hotel Center के डेटा का ऐक्सेस देना
आखिरी चरण में आपको नए सेवा खाते को Hotel Center. सेवा खाते की पहचान, जनरेट किए गए उस ईमेल पते से की जाती है जो जिन्हें आपने पिछले चरण में बनाया था. आप यहां दिए गए लिंक पर जाकर इस खाते को ऐक्सेस करने की अनुमति देते हैं: Hotel Center शेयर करने की सेटिंग में.
किसी सेवा खाते को अपने Hotel Center के डेटा का ऐक्सेस देने के लिए:
अगर आपके पास खाते में उपयोगकर्ताओं को जोड़ने के लिए सही ऐक्सेस नहीं है, तो Google पर होटल की टीम हमसे संपर्क करें फ़ॉर्म का इस्तेमाल करके, होटल का मालिकाना हक सेट अप करने के लिए हमसे अनुरोध करें आपका खाता. आप किसी मालिक को ईमेल भेजने के लिए, एक या उससे ज़्यादा ईमेल पाने का अनुरोध कर सकते हैं. Hotel Center के ऐक्सेस के बारे में ज़्यादा जानकारी के लिए, यह देखें Hotel Center और Google Ads.
नई ब्राउज़र विंडो में, Hotel Center खोलें.
Hotel Center by Google बैनर में, 'उपयोगकर्ता जोड़ें' आइकॉन पर क्लिक करें शेयर करने के लिए डायलॉग बॉक्स.
ज़्यादा लोगों को जोड़ें फ़ील्ड में, सेवा का ईमेल पता डालें खाता जिसे अपने Hotel Center में जोड़ना है.
लोगों को सूचना दें विकल्प को चुनकर रखें.
ड्रॉप-डाउन मेन्यू से, मैनेज करें को चुनें.
न्योता दें बटन पर क्लिक करें.
Hotel Center में उपयोगकर्ताओं को जोड़ने के बाद, आपका सेवा खाता को करीब 24 घंटे में एपीआई ऐक्सेस के लिए चालू कर दिया गया है.
जब Google आपको यह सूचना दे देता है कि आपकी सेवा के लिए एपीआई ऐक्सेस चालू किया गया है तो OAuth की मदद से एपीआई को ऐक्सेस किया जा सकता है.
OAuth 2.0 का इस्तेमाल करना
एपीआई को ऐक्सेस करने के लिए, आपके ऐप्लिकेशन को
सेवा खाते में जनरेट किया गया ईमेल पता और निजी कुंजी होनी चाहिए. Google की
पुष्टि करने का तरीका, इस कुंजी को OAuth 2.0 ऐक्सेस टोकन से बदल देता है जो
Authorization
हेडर को अपने ऐप्लिकेशन के एपीआई कॉल में पास किया जाता है.
ऐक्सेस टोकन (जिन्हें बियरर टोकन भी कहा जाता है) OAuth 2.0 का हिस्सा हैं मानक. एचटीटीपी हेडर में ऐक्सेस टोकन तय करने का सिंटैक्स यह है:
Authorization: Bearer *oauth2_access_token*
नीचे दिए गए उदाहरण में, उस अनुरोध के सैंपल एचटीटीपी हेडर दिखाए गए हैं जो रिपोर्ट एपीआई:
GET /travelpartner/v2.0/42000042/reports/top_opportunity_7_day HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer nd42.fdLSKkljD98344444444444lSDF42fdLSKkljD98344444444444lSDF42
Cache-Control: no-cache
ऐक्सेस टोकन जनरेट करने के लिए, अपनी चुनी गई किसी भी भाषा में ऐप्लिकेशन बनाएं.
नीचे दिया गया उदाहरण Python में टोकन जनरेट करता है. इसके बाद, इस
टोकन की जानकारी का Travel Partner API को ऐक्सेस करते समय, Authorization
हेडर.
#!/usr/bin/python2.7
#
""" Sample code to get an auth header that you can use in your HTTP requests
1. Please see https://developers.google.com/api-client-library/python/start/installation
to download and install the google-api-python-client package.
2. Edit lines below marked _SERVICE_ACCOUNT, _KEY_FILE, _PARTNER_NAME,
and _API_VERSION.
3. Run the program using: "python sample.py". The app returns the value that
you use for the Authorization header's Bearer token in your request.
4. Copy the token and use it in requests to the Travel Partner API.
For example (2.0):
https://www.googleapis.com/travelpartner/2.0/42000042/reports/budget
For example (1.x):
https://www.googleapis.com/travelpartner/1.2/reports?report_type=BUDGET
"""
import httplib2
import json
import os
import sys
import urllib
HAS_CRYPTO = False
from apiclient import discovery
from oauth2client.client import flow_from_clientsecrets
try:
# Some systems may not have OpenSSL installed so can't use SignedJwtAssertionCredentials.
from oauth2client.client import SignedJwtAssertionCredentials
HAS_CRYPTO = True
except ImportError:
print "Unable to import SignedJwtAssertionCredentials"
from oauth2client import tools
from oauth2client.file import Storage
# Authorization scope for our requests (do not change)
_DEFAULT_APISCOPE = 'https://www.googleapis.com/auth/travelpartner'
# Use the service account you set up in the Google Developers Platform.
# It will be of the form "gsaccount_name@project_name.google.com.iam.gserviceaccount.com".
_SERVICE_ACCOUNT = ('myserviceaccount@my-hotel-project.google.com.iam.gserviceaccount.com')
# Set this to the full path to your service account's private binary .p12 key file
# that you downloaded from the Google Developer's Console and stored in a secure place.
# DO NOT use the json version of the certificate.
_KEY_FILE = '../mylocaldir/api-keys/8482bb2bdb08.p12'
# Set this to the case-sensitive "Partner Key", NOT the account
# name in the Hotel Ads Center or the numeric partner ID.
# Check with your TAM if you do not know your "Partner Key" name.
_PARTNER_NAME = 'testpartner2'
class HotelAdsAPIConnection(object):
def __init__(self, service_account=_SERVICE_ACCOUNT, key=_KEY_FILE, partner=_PARTNER_NAME):
self.key_file = key
self.account = service_account
self.partner = partner
def InitializeCredentials(self, scope):
'''Get credentials for use in API requests.
Generates service account credentials if the key file is present,
and regular user credentials if the file is not found.
'''
if os.path.exists(self.key_file):
if not HAS_CRYPTO:
raise Exception("Unable to use cryptographic functions "
+ "Try installing OpenSSL")
with open (self.key_file, 'rb') as file:
key = file.read();
creds = SignedJwtAssertionCredentials(self.account, key, scope)
self.credentials = creds
def authorize(self):
'''Construct a HTTP client that uses the supplied credentials.'''
return credentials.authorize(httplib2.Http())
def print_creds(self):
'''Prints the Authorization header to use in HTTP requests.'''
cred_dict = json.loads(self.credentials.to_json())
if 'access_token' in cred_dict:
print 'Authorization: Bearer %s' % (cred_dict['access_token'],)
else:
print 'creds: %s' % (cred_dict,)
def GetConnection(self):
http = httplib2.Http()
self.credentials.refresh(http)
http = self.credentials.authorize(http)
self.print_creds()
return http
def main(args):
# Create an instance of the HotelAdsAPIConnection inner class
api = HotelAdsAPIConnection()
# Generate credentials
api.InitializeCredentials(_DEFAULT_APISCOPE)
# Output the Authorization header to use in HTTP requests
api.GetConnection()
if __name__ == "__main__":
main(sys.argv)</pre>
अपना ऐप्लिकेशन डेवलप करते समय, सबसे सही तरीके अपनाएं ताकि एपीआई पासकोड का सुरक्षित तरीके से इस्तेमाल किया जा सके.
सैंपल Python स्क्रिप्ट, Authorization
हेडर के बेयरर के साथ आउटपुट देती है
जैसा कि नीचे दिया गया है:
$ python sample.py Authorization: Bearer ya29.42424242sample_420icu8122KSvoh4T42cRoG3rW1lc0Q $
अपने अनुरोधों में टोकन की वैल्यू का इस्तेमाल करें. यह बढ़िया है उसे जनरेट करें.
समस्या का हल
क्या आपको कोई समस्या आ रही है? नीचे दिए गए आइटम की जल्दी से जांच करने से समस्या हल हो सकती है उस समस्या को हल कर सकें.
- क्या आपने Google Developer Console में कोई प्रोजेक्ट बनाया था?
- क्या आपने Travel Partner API को ढूंढा और उसे चालू किया?
- क्या आपने कोई
.p12
फ़ाइल डाउनलोड की—जो क्लिक करने के बाद एक निजी कुंजी थी क्या आपको क्लाइंट आईडी बनाना है और सेवा खाता चुनना है? - क्या आपको किसी फ़ॉर्म में, सेवा खाते के क्लाइंट आईडी का ईमेल पता मिला था:
nnnnnnn@app_name.google.com.iam.gserviceaccount.com
? - क्या आपने क्लिक करके, सेवा खाते के साथ अपना होटल विज्ञापन सेंटर खाता शेयर किया यह खाता शेयर करें बटन?
- क्या आपने सेवा खाते का ईमेल पता और अपना पार्टनर आईडी इस ईमेल पते पर भेजा है आपका तकनीकी खाता मैनेजर (टीएएम) है?
- क्या आपके Travel Partner API कॉल, हाल ही में हासिल किया गया टोकन पास कर रहे हैं
Authorization
हेडर? - क्या आपके
Authorization
हेडर का बेयरर टोकन 1 घंटे से ज़्यादा पुराना है?
यहां दी गई टेबल में कुछ आम गड़बड़ियों और उन्हें ठीक करने के तरीकों की सूची दी गई है:
गड़बड़ी | ब्यौरा |
---|---|
Invalid credentials | इसके कई मतलब हो सकते हैं. अगर आपको यह गड़बड़ी दिखती है, तो जांच लें कि:
|
Not found | ज़्यादातर मामलों में, आपका एंडपॉइंट गलत है. देखें कि आप
GET अनुरोध करता है और अनुरोध URL मान्य है (यह
उस एपीआई सिंटैक्स में जोड़ा जा सकता है जिसे ऐक्सेस करने की कोशिश की जा रही है). |
Invalid string value | एंडपॉइंट के एक या उससे ज़्यादा हिस्सों में अमान्य सिंटैक्स है. उदाहरण के लिए, ऐसा भी हो सकता है कि आपने पाथ के किसी हिस्से की स्पेलिंग गलत तरीके से लिखी हो. देखें कि आपने सही तरीके से इस्तेमाल किया है या नहीं आपके पूरे पाथ में अंडरस्कोर, कैपिटल लेटर के इस्तेमाल, और शब्द इस्तेमाल किए जा सकते हैं. |
Unsupported output format | आम तौर पर, यह गड़बड़ी रिपोर्ट एपीआई का इस्तेमाल करते समय होती है. आपको ऐसा ज़रूर करना चाहिए
अपने GET के यूआरएल में "alt=csv" बताएं
अनुरोध. रिपोर्ट एपीआई, JSON के साथ काम नहीं करता है. |
AccessTokenRefreshError/Invalid grant | Python ऐप्लिकेशन का नमूना चलाते समय, यह गड़बड़ी इस वजह से हो सकती है
इनमें से शामिल हों:
|
HotelAdsAPIConnection object has no attribute credentials | सैंपल Python ऐप्लिकेशन चलाते समय, आपके .p12 का पाथ
फ़ाइल गलत है. |
Invalid scope | सैंपल Python ऐप्लिकेशन चलाते समय, एपीआई का दायरा ऐसा होना चाहिए
https://www.googleapis.com/auth/travelpartner . |
Forbidden | आपने जिस खाता आईडी का इस्तेमाल किया है उसका इस्तेमाल करने की अनुमति आपके पास नहीं है ऐक्सेस करने के लिए. अगर आप उप-खाते के मालिक हैं, तो हो सकता है कि आप पैरंट या रूट खाता आईडी. |