במסמכי התיעוד האלה מפורטות הוראות להגדרת OAuth2.0 באפליקציה שלכם כשאתם ניגשים לממשקי ה-API של המלונות, כמו Travel Partner API ו-Price Feeds API. כדי לתת הרשאה לאפליקציה, אפשר לעיין במאמר שימוש ב-OAuth 2.0 כדי לגשת אל Google APIs.
הגדרת OAuth 2.0
ב-OAuth 2.0 נדרש שתזדהו באמצעות חשבון שירות שמקושר לחשבון Google שלכם. חשבון השירות שולח את המפתח הפרטי שלכם בתמורה לאסימון גישה מסוג OAuth 2.0. לאחר מכן תוכלו להשתמש בטוקן הזה בקריאות לממשקי ה-API של המלונות כדי לקבל נתונים לקריאה בלבד, כמו נתוני תמחור, נתוני מלונות ונתוני דיווח אבחוניים על פיד מחירי המלונות.
אסימוני גישה תקפים למשך שעה אחת (3,600 שניות).
אם הטמעתם בעבר את ClientLogin, הגישה של OAuth 2.0 דומה, עם ההבדלים הבאים:
- האפליקציה משתמשת בחשבון שירות של Google כדי לגשת ל-API.
- כשקוראים לממשקי API, מעבירים אסימון גישה מסוג OAuth 2.0 בכותרת
AuthorizationHTTP.
כדי להגדיר את החשבון לשימוש ב-OAuth 2.0 עם כל ממשק Hotels API, צריך לבצע את השלבים הבאים:
כל אחד מהשלבים האלה מתואר בפירוט בסעיפים הבאים.
שלב 1: יצירת פרויקט חדש במסוף Google Cloud
במסוף Google Cloud אפשר לנהל ולהציג נתוני תנועה, אימות ופרטי חיוב עבור ממשקי ה-API של Google שבהם נעשה שימוש בפרויקטים.
במסוף Google Cloud, פרויקט הוא אוסף של הגדרות, פרטי כניסה ומטא-נתונים לגבי האפליקציה שאתם עובדים עליה, שמשתמשת בממשקי API של Google למפתחים ובמשאבי Google Cloud.
במסוף Google Cloud משתמשים גם כדי ליצור פרטי כניסה ל-API, להפעיל ממשקי API ולנהל את פרטי הצוות והחיוב שמשויכים לפרויקט.
כדי ליצור פרויקט חדש במסוף Google Cloud:
נכנסים לחשבון Gmail או לחשבון Google.
פותחים את מסוף Google Cloud. אם זה הפרויקט הראשון שלכם, בתצוגה הראשית יופיע לחצן יצירת פרויקט:
לוחצים על הלחצן יצירת פרויקט. במסוף Google Cloud מוצג הדו-שיח New Project:
מזינים שם קליט לפרויקט החדש בשדה הקלט Project name (שם הפרויקט). מתחת לשדה, מסוף Google Cloud יוצר מזהה פרויקט ייחודי לכל הפרויקטים. לדוגמה, אם תזינו 'הפרויקט החדש שלי', מסוף Google Cloud יקצה מזהה כמו
my-new-project-266022.לוחצים על הלחצן יצירה כדי ליצור את הפרויקט החדש.
בתפריט הניווט, בוחרים באפשרות APIs & Services > Dashboard (ממשקי API ושירותים > מרכז בקרה).
בתמונה הבאה מוצג תפריט הניווט בפינה הימנית העליונה של מסוף Google Cloud. מוצג התצוגה של לוח הבקרה של הפרויקט:
מידע נוסף זמין במאמר יצירה וניהול של פרויקטים.
שלב 2: יצירת חשבון שירות ויצירת פרטי הכניסה שלו
חשבונות שירות משמשים לאינטראקציות בין שרתים, כמו אלה שמתרחשות בין אפליקציית אינטרנט לבין נתוני המלונות שלכם.
כדי ליצור ולהגדיר חשבון שירות:
בתצוגה הראשית של Google API Console, לוחצים על Credentials בתפריט הניווט בצד ימין. מוצג התצוגה Credentials במסוף Google Cloud.
בתצוגה Credentials (פרטי כניסה) מוצגים מזהי לקוחות ופרטי כניסה לפרויקט. האפליקציה משתמשת במזהה הלקוח כשמבקשים אסימון גישה של OAuth 2.0. לפרויקטים חדשים עדיין אין לקוחות או פרטי כניסה.
לוחצים על הקישור Credentials in APIs and services (פרטי כניסה בממשקי API ובשירותים).
לוחצים על הלחצן Create credentials ובוחרים באפשרות Service account key מהמסנן. מוצג התצוגה Create service account key (יצירת מפתח לחשבון שירות).
במסנן Service account בוחרים באפשרות New service account.
מזינים שם של חשבון שירות ומזהה של חשבון שירות.
אפשר לבחור כל שם שרוצים, אבל מזהה החשבון חייב להיות ייחודי בכל הפרויקטים. מסוף Google Cloud יוצר עבורכם מזהה חשבון ייחודי על סמך השם שהזנתם.
בוחרים באפשרות JSON בתור סוג המפתח. חובה להשתמש ב-JSON.
לוחצים על הלחצן יצירה. מסוף Google Cloud יוצר זוג מפתחות פרטיים או ציבוריים לפרויקט שלכם. המפתח הפרטי נשמר במיקום ברירת המחדל שבו הדפדפן שומר הורדות. צריך להוריד את הקובץ בפורמט
.JSON.משתמשים במפתח הפרטי בסקריפטים או באפליקציות אחרות שפועלות עם ה-API.
במסוף Google Cloud מוצגת ההודעה 'נוצר חשבון שירות' כשהמערכת מסיימת ליצור את המפתחות.
לוחצים על הלחצן הבנתי. ממסוף Google Cloud חוזרים לתצוגה Credentials. כדי לאשר את הפרטים על חשבון השירות ולראות את חשבון השירות שמשויך לפרויקט, לוחצים על ניהול חשבונות שירות בתצוגה הזו.
לחשבון השירות משויכים עכשיו פרטי הכניסה הבאים:
- מזהה לקוח: מזהה ייחודי שהאפליקציה שלכם משתמשת בו כשמבקשים אסימון גישה מסוג OAuth 2.0.
- כתובת אימייל: כתובת אימייל שנוצרה לחשבון השירות, בפורמט account_name@project_name.google.com.iam.gserviceaccount.com.
- טביעות אצבע של האישור: המזהה של המפתח הפרטי שהורדתם.
מידע נוסף זמין במאמר שימוש ב-OAuth 2.0 לאפליקציות שרת-אל-שרת.
שלב 3: מעניקים לחשבון השירות גישה לנתונים שלכם ב-Hotel Center
השלב האחרון הוא להעניק לחשבון השירות החדש גישה ל-Hotel Center. חשבון השירות מזוהה באמצעות כתובת האימייל שנוצרה בשלב הקודם. כדי להעניק גישה לחשבון הזה, צריך להשתמש בהגדרות השיתוף של Hotel Center.
אם אין לכם גישה מתאימה להוספת משתמשים לחשבון, אתם יכולים לפנות לצוות Google Hotels באמצעות הטופס יצירת קשר ולבקש להגדיר בעלות על החשבון שלכם. אפשר לבקש להעביר אימייל אחד או יותר לבעלים. מידע נוסף על גישה ל-Hotel Center זמין במאמר קישור בין Hotel Center ל-Google Ads.
כדי לתת לחשבון שירות גישה לנתונים שלכם ב-Hotel Center:
פותחים חלון חדש בדפדפן וניגשים אל Hotel Center.
באנר Hotel Center by Google, לוחצים על סמל הוספת המשתמשים כדי לפתוח את תיבת הדו-שיח של השיתוף.
בשדה Add more people, מזינים את כתובת האימייל של חשבון השירות שרוצים להוסיף ל-Hotel Center.
משאירים את האפשרות לשלוח לאנשים הודעה מסומנת.
בתפריט המסנן, בוחרים באפשרות ניהול.
לוחצים על הלחצן הזמנה.
אחרי שמוסיפים משתמשים ל-Hotel Center, חשבון השירות אמור לקבל גישה ל-API תוך 24 שעות בערך.
אחרי ש-Google מודיעה לכם שגישת ה-API מופעלת לחשבון השירות שלכם, אתם יכולים להתחיל לגשת ל-API באמצעות OAuth 2.0.
איך משתמשים ב-OAuth 2.0
כדי לגשת ל-API, האפליקציה צריכה לזהות את עצמה ב-Google באמצעות כתובת האימייל והמפתח הפרטי שנוצרו לחשבון השירות. מנגנון האימות של Google מחליף את המפתח הזה באסימון גישה מסוג OAuth 2.0 שמועבר בכותרת Authorization בקריאות ל-API של האפליקציה.
מידע נוסף זמין במאמר הכנה לשליחת קריאה ל-API עם הרשאת גישה מוגבלת.
טווחים
אלה הם SCOPES של Hotels API:
Travel Partner API: "https://www.googleapis.com/auth/travelpartner"
Price Feeds API: "https://www.googleapis.com/auth/travel-partner-price-upload"
צריך לציין את חשבון השירות כשיוצרים את פרטי הכניסה. אפשר להיעזר במאמר בנושא יצירה של חשבון שירות ויצירת פרטי הכניסה שלו.
במהלך פיתוח האפליקציה, חשוב לפעול לפי השיטות המומלצות לאימות האפליקציה באמצעות מפתחות API. מידע נוסף
דוגמה
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.
כדי להפעיל גישה אל Travel Partners API:
עוברים לתצוגת מרכז הבקרה של הפרויקט.
לוחצים על Enable APIs and Services. מוצג דף הפתיחה של ספריית ה-API.
בשדה החיפוש, מתחילים להקליד 'Travel Partner API'. לאחר מכן, במסוף מוצגת רשימה של ממשקי API שתואמים למה שהקלדתם.
לוחצים על ה-API התואם בטבלה. במסוף Google Cloud מוצג תיאור של ה-API.
לוחצים על הלחצן הפעלת API כדי להפעיל את ה-API הזה בפרויקט.
מידע נוסף זמין במאמר הפעלה והשבתה של שירותים.
ה-API של שותף הנסיעות מופעל עכשיו בפרויקט החדש של חשבון Google שלכם.
ההיקף של 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 בתחום האירוח יכולים להשתמש ב-OAuth2.0 כדי לבצע אימות ולקבל הרשאה להעלות מחירים ל-Google. פועלים לפי הוראות ההגדרה של OAUTH 2.0 כדי לקבל הרשאה ל-Price Feeds API.
נקודות שחשוב לזכור
חשוב לשים לב להבדלים בהוראות ההרשאה ל-Price Feeds API.
שותפים צריכים ליצור פרויקט חדש של פידים של מחירים ב-OAuth2.0 במסוף Google Cloud באמצעות אותן הוראות שמופיעות במאמר הגדרת OAuth 2.0.
לא צריך להפעיל את Price Feeds API במסוף Google Cloud, ואפשר להתעלם מההוראה הזו. צריך רק חשבון שירות אחד ומפתח אחד, ואז משתמשים באותו חשבון שירות ובאותו מפתח כדי להעניק לפרויקט Price Feeds גישה לנתונים שלכם ב-Hotel Center. כדי להשלים את הגדרת ה-API, צריך לפעול לפי השלבים הנותרים שמפורטים בהגדרה של OAuth2.0.
קבלת אסימון גישה מסוג OAuth2.0 לפידים של נתוני מחירים
השלב הבא הוא לקבל אסימון גישה מסוג OAuth 2.0 עם היקף ההרשאות של העלאת מחירי לינה באמצעות קובץ המפתח של חשבון השירות. כדי לאשר בקשות לפרויקט Price Feeds, צריך לפעול לפי ההוראות שמפורטות במאמר הכנה לביצוע קריאה מוקצית ל-API, ואז לחלץ את אסימון הגישה מפרטי הכניסה שהתקבלו ולהגדיר אותו בכותרת ה-HTTP "Authorization".
ההיקף של העלאת מחירי מקומות אירוח הוא:
"https://www.googleapis.com/auth/travel-partner-price-upload"
העלאת מחירים
אחרי קבלת אסימון הגישה, השותפים יכולים להעלות את פיד המחירים שלהם בדומה לשימוש בכתובת IP סטטית לאימות והרשאה, עם השינוי הבא:
- הגדרת טוקן גישה בכותרת HTTP
"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>בדיקת ההגדרה של OAuth2.0 ל-Price Feeds API
אתם יכולים לבדוק את ההגדרה של OAuth2.0 על ידי העלאה של קובץ ריק או של נתוני מחירים אמיתיים לכל אחד מנתיבי ההעלאה. בטבלה אפשר לבדוק את סטטוס התגובה של HTTP.
| סטטוס תגובת HTTP | שליחת הודעה |
|---|---|
| 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 |
פתרון בעיות
נתקלתם בבעיות? בדיקה מהירה של הפריטים הבאים עשויה לפתור את הבעיה.
- האם יצרתם פרויקט במסוף Google Cloud?
- האם הפעלתם את השירות בפרויקט?
- האם הורדת קובץ
.JSON– מפתח פרטי – אחרי שלחצת על Create client ID ובחרת באפשרות Service account? - קיבלת אימייל עם כתובת אימייל של מזהה לקוח של חשבון שירות בפורמט:
nnnnnnn@app_name.google.com.iam.gserviceaccount.com? - האם שיתפתם את חשבון Hotel Ads Center עם חשבון השירות באמצעות לחיצה על הלחצן שיתוף החשבון הזה?
- האם שלחתם למנהל החשבונות הטכני (TAM) את כתובת האימייל של חשבון השירות ואת מזהה השותף שלכם?
- האם קריאות ה-API שלך מעבירות טוקן שהתקבל לאחרונה בכותרת
Authorization? - האם האסימון נוצר לפני יותר משעה?
בטבלה הבאה מפורטות כמה שגיאות נפוצות ופתרונות אפשריים:
| שגיאה | תיאור |
|---|---|
| Invalid credentials | יכולות להיות לכך כמה סיבות. אם נתקלתם בשגיאה הזו,
בדקו את הדברים הבאים:
|
| Not found | סביר להניח שנקודת הקצה שלך לא תקינה. צריך לוודא שאתם שולחים בקשת GET וכתובת ה-URL של הבקשה תקינה (היא תואמת לתחביר של ה-API שאליו אתם מנסים לגשת). |
| Invalid string value | חלק אחד או יותר בנקודת הקצה מכיל תחביר לא תקין. לדוגמה, יכול להיות שטעיתם באיות של חלק מהנתיב. בדקו שהשתמשתם בקו תחתון, באותיות רישיות ובניסוח הנכונים בכל הנתיב. |
| Unsupported output format | השגיאה הזו מתרחשת בדרך כלל כשמשתמשים ב-Reports API. בכתובת ה-URL של הבקשה GET צריך לציין את "alt=csv". Reports API לא תומך ב-JSON. |
| AccessTokenRefreshError/Invalid grant | יכול להיות שהשגיאה הזו מופיעה כשמריצים את האפליקציה בגלל אחת מהסיבות הבאות:
|
| HotelAdsAPIConnection object has no attribute credentials | כשמריצים את האפליקציה, הנתיב לקובץ .JSON שגוי. |
| Invalid scope | כשמריצים את האפליקציה, היקף ה-API חייב להיות אחד מהבאים:
|
| Forbidden | מספר החשבון שבו השתמשתם הוא מספר של חשבון שאין לכם הרשאה לגשת אליו. אם אתם הבעלים של חשבון משנה, יכול להיות שלא תהיה לכם גישה למזהה של חשבון האב או חשבון הבסיס. |