אימות API

במסמכי התיעוד האלה יש הוראות מפורטות להגדרת OAuth2.0 בזמן הגישה לממשקי API של מלונות כמו Travel Partner API ו-Price Feeds API (פידים של ממשק ה-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.
  • מעבירים אסימון גישה מסוג OAuth 2.0 בכותרת ה-HTTP Authorization כאשר וקריאות לממשקי API.

כדי להגדיר בחשבון שימוש ב-OAuth 2.0 עם Hotels API, צריך לבצע את הפעולות הבאות שלבים:

  1. יצירת פרויקט חדש במסוף Google Cloud

  2. יצירה של חשבון שירות ופרטי הכניסה שלו

  3. מתן גישה לחשבון השירות לנתוני המלון

כל אחד מהשלבים האלה מתואר בסעיפים הבאים.

שלב 1: יצירת פרויקט חדש במסוף Google Cloud

מסוף Google Cloud משמש לניהול ולהצגה של נתוני תעבורת הנתונים, האימות ונתוני החיוב עבור ממשקי ה-API של Google שהפרויקטים שלך לשימוש.

במסוף Google Cloud, פרויקט הוא אוסף של הגדרות, פרטי כניסה ומטא-נתונים לגבי האפליקציה שאתם עובדים עליה, שמשתמשת בממשקי Google Developer API ובמשאבים של Google Cloud.

מסוף Google Cloud משמש גם ליצירת פרטי כניסה ל-API, ולהפעלה ממשקי API וניהול של נתוני הצוות ונתוני החיוב המשויכים לפרויקט שלכם.

כך יוצרים פרויקט חדש במסוף Google Cloud:

  1. נכנסים לחשבון Gmail או לחשבון Google.

  2. פותחים את מסוף Google Cloud. אם זה הפרויקט הראשון שלכם, בתצוגה הראשית מופיע הכיתוב CREATE PROJECT לחצן:

    fig1

  3. לוחצים על הלחצן CREATE PROJECT. במסוף Google Cloud יוצג תיבת הדו-שיח פרויקט חדש:

    fig2

    מזינים שם מתאים לפרויקט החדש בקטע Project name (שם הפרויקט). שדה להזנת קלט. מתחת לשדה, מסוף Google Cloud יוצר פרויקט שמבטיח שהמזהה יהיה ייחודי בכל הפרויקטים. לדוגמה, אם מזינים את הביטוי 'הפרויקט החדש שלי', מסוף Google Cloud מקצה מזהה כמו my-new-project-266022

  4. לוחצים על הלחצן Create כדי ליצור את הפרויקט החדש.

  5. משתמשים בתפריט הניווט כדי לבחור באפשרות APIs & שירותים > מרכז השליטה.

    fig3

    תמונה שבה רואים את תפריט הניווט בפינה הימנית העליונה של במסוף Google Cloud. פעולה זו מציגה את התצוגה מרכז שליטה עבור project:

    fig4

למידע נוסף, קראו את המאמר יצירה וניהול של פרויקטים.

שלב 2: יצירת חשבון שירות ויצירת פרטי הכניסה שלו

חשבונות שירות משמשים לאינטראקציות בין שרת לשרת, כמו האינטראקציות בין אפליקציית אינטרנט ונתוני המלון שלכם.

כדי ליצור ולהגדיר חשבון שירות:

  1. בתצוגה הראשית של Google API Console, לוחצים על Credentials בתפריט הניווט הימני. פרטי הכניסה יוצגו במסוף Google Cloud צפייה.

    בתצוגה פרטי כניסה מוצגים מזהי הלקוח ופרטי הכניסה של פרויקט. האפליקציה משתמשת במזהה הלקוח כששולחים בקשה אסימון גישה מסוג OAuth 2.0. לפרויקטים חדשים אין לקוחות או פרטי כניסה עדיין.

  2. לוחצים על הקישור Credentials in APIs and services.

  3. לוחצים על הלחצן Create credentials ובוחרים באפשרות Service account key מהמסנן. התצוגה Create service account key מוצגת.

  4. במסנן חשבון שירות, בוחרים באפשרות חשבון שירות חדש.

  5. מזינים שם לחשבון השירות ומזהה של חשבון השירות.

    השם יכול להיות כל מה שרוצים, אבל מספר החשבון חייב להיות ייחודי בכל הפרויקטים. מסוף Google Cloud יפיק מספר חשבון ייחודי של על סמך השם שהזנת.

  6. בוחרים באפשרות JSON בתור סוג המפתח. צריך להשתמש בפורמט JSON.

  7. לוחצים על הלחצן Create. מסוף Google Cloud יוצר זוג מפתחות ציבוריים לפרויקט. המפתח הפרטי נשמר בברירת המחדל במיקום שבו הדפדפן מאחסן את ההורדות. צריך להוריד קובץ בפורמט .JSON.

    אתם משתמשים במפתח הפרטי בסקריפטים או באפליקציות אחרות שיש להן גישה בממשק ה-API.

    במסוף Google Cloud מוצג הכיתוב 'חשבון השירות שנוצר' כשמתקבלת הודעה מסיימת ליצור את המפתחות.

  8. לוחצים על הלחצן הבנתי. מסוף Google Cloud מחזיר אתכם התצוגה Credentials. כדי לאשר את הפרטים לגבי חשבון השירות שלכם כדי לראות את חשבון השירות המשויך לפרויקט, לוחצים על ניהול חשבונות שירות בתצוגה הזו.

    לחשבון השירות משויכים עכשיו פרטי הכניסה הבאים:

    • Client ID: מזהה ייחודי שהאפליקציה משתמשת בו מבקשים אסימון גישה מסוג OAuth 2.0.
    • כתובת אימייל: כתובת אימייל שנוצרה עבור חשבון השירות, הטופס "account_name@account_name.google.com.iam.gserviceaccount.com" .
    • טביעות אצבע לאישור: המזהה של המפתח הפרטי שקיבלתם ההורדה הושלמה.

מידע נוסף זמין במאמר שימוש ב-OAuth 2.0 לאפליקציות משרת לשרת.

שלב 3: מעניקים לחשבון השירות גישה לנתונים ב-Hotel Center

השלב האחרון הוא לתת לחשבון השירות החדש גישה אל Hotel Center חשבון השירות מזוהה באמצעות כתובת האימייל שנוצרה. שיצרתם בשלב הקודם. אתה מספק גישה לחשבון הזה באמצעות הרשאות השיתוף של Hotel Center.

אם אין לך גישה מתאימה כדי להוסיף משתמשים לחשבון, אפשר לפנות אל צוות 'Google בתי מלון' באמצעות הטופס יצירת קשר ומבקשים להגדיר בעלות על החשבון שלך. אפשר לבקש שליחה של הודעת אימייל אחת או יותר לבעלים. מידע נוסף על הגישה ל-Hotel Center זמין במאמר קישור בין Hotel Center לבין Google Ads.

כדי לתת לחשבון שירות גישה לנתונים שלכם ב-Hotel Center:

  1. בחלון דפדפן חדש, פותחים את Hotel Center. fig7

  2. בבאנר של Hotel Center by Google, לוחצים על סמל הוספת המשתמש כדי לפתוח אותו. בתיבת הדו-שיח של השיתוף.

    fig8

  3. בשדה הוספת אנשים, מזינים את כתובת האימייל של השירות. החשבון שרוצים להוסיף ל-Hotel Center.

  4. משאירים את האפשרות שליחת הודעה לאנשים מסומנת.

  5. בוחרים באפשרות ניהול מהמסנן.

  6. לוחצים על הלחצן הזמנה.

  7. אחרי שמוסיפים משתמשים ל-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"

Travel Partner Prices API: "https://travelpartnerprices.googleapis.com"

ממשק 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://travelpartnerprices.googleapis.com','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)

ממשק API של Travel Partner

אפשר להשתמש ב-Travel Partner API כדי לאפשר לשותפי לינה לאחזר את הנתונים של Hotel Center כדי לנהל חשבונות גדולים או מורכבים, ולשנות את הנתונים ב-Hotel Center.

צריך לפעול לפי ההוראות להגדרה של OAUTH 2.0 כדי לקבל הרשאה עבור ל-Travel Partner API.

כשיוצרים פרויקט חדש ל-Travel Partner API, צריך לאפשר גישה לפרויקט החדש במסוף Google Cloud.

כדי להפעיל גישה ל-Travel Partners API:

  1. עוברים לתצוגת מרכז הבקרה של הפרויקט.

  2. לוחצים על Enable APIs and Services. תוצג הודעת הפתיחה של ספריית ה-API הדף הזה.

  3. בשדה החיפוש, מתחילים להקליד "Travel Partner API", ולאחר מכן את המסוף. מציגה רשימה של ממשקי API שתואמים לטקסט שאתם מקלידים.

  4. לוחצים על ה-API שתואם בטבלה. במסוף Google Cloud יוצג לתיאור ה-API הזה.

  5. לוחצים על הלחצן Enable API כדי להפעיל את ה-API הזה בפרויקט.

מידע נוסף זמין במאמר הפעלה והשבתה של שירותים.

Travel Partner API מופעל עכשיו בפרויקט החדש של חשבון Google שלך.

ההיקף של Travel Partner API הוא: "https://www.googleapis.com/auth/travelpartner"

נקודת הקצה ב-Travel Partner API היא: "https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"

ממשק API של Travel Partner Prices

Travel Partner Prices API מאפשר לשותפי מלונות לשלוח מחירי מלונות אל Google. הוא נקרא גם תמחור לפי משך השהייה (LoS).

פועלים לפי ההוראות להגדרת OAuth 2.0 כדי לקבל הרשאה ל-Travel Partner Prices API.

כשיוצרים פרויקט חדש עבור Travel Partner Prices API, צריך: תאפשר גישה לפרויקט החדש במסוף Google Cloud, שדומה לפרויקט ההוראות המפורטות ב-Travel Partner API.

בשלבים שצוינו ב-Travel Partner API יש את כל כל המופעים של Travel Partner API באמצעות 'Travel Partner Prices API' כדי להפעיל בפרויקט שלכם.

ההיקף של Travel Partner Prices API הוא: "https://travelpartnerprices.googleapis.com"

נתיב ההעלאה של Travel Partner Prices API הוא: "/travel/lodging/uploads/accounts/<account_id>/property_data"

Price Feeds API

התכונה 'פידים של מחירים' מאפשרת לשותפי מלונות לספק נתוני תמחור מותאמים אישית לכל מלון. שותפי האירוח של Google יכולים להשתמש ב-OAuth2.0 כדי לבצע אימות לאשר את עצמם בעת העלאת מחירים ל-Google. מעקב אחר OAUTH 2.0 הוראות הגדרה כדי לקבל הרשאה ל-Price Feeds API.

נקודות שכדאי לזכור

שימו לב להבדלים החשובים בהוראות בנושא הרשאה בפידים של מחירים API.

  1. השותפים צריכים ליצור פרויקט OAuth2.0 חדש בפידים של מחירים במסוף Google Cloud לפי ההוראות שמפורטות בהגדרה של OAuth 2.0.

  2. לא נדרשת הפעלה של Price Feeds API במסוף Google Cloud. וניתן להתעלם מהן. צריך רק חשבון שירות אחד. ואז להשתמש באותו מקש חשבון שירות ו מפתח כדי להעניק הרשאת גישה לפרויקט 'פידים של מחירים' במלון למרכז נתונים. פועלים לפי שאר השלבים שהוזכרו בהגדרת OAuth2.0 כדי להשלים את הגדרת ה-API.

קבלת אסימון גישה מסוג OAuth2.0 לפידים של מחירים

השלב הבא הוא לקבל אסימון גישה מסוג OAuth2.0 עם העלאת מחיר הלינה את ההיקף באמצעות קובץ המפתח של חשבון השירות. אפשר לאשר בקשות אל מגדירים את הפרויקט בפידים של מחירים לפי ההוראות שמפורטות בקטע הכנה לשליחת קריאה ל-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

פתרון בעיות

נתקלת בבעיות? בדיקה מהירה של הפריטים הבאים עשויה לפתור את הבעיה את הבעיה.

  1. יצרתם פרויקט במסוף Google Cloud?
  2. האם הפעלתם את השירות בפרויקט?
  3. האם הורדת קובץ .JSON - מפתח פרטי לאחר לחיצה ליצור מזהה לקוח ולבחור באפשרות חשבון שירות?
  4. האם קיבלת כתובת אימייל של מזהה לקוח של חשבון שירות בטופס: nnnnnnn@app_name.google.com.iam.gserviceaccount.com?
  5. האם שיתפת את חשבון Hotel Ads Center עם חשבון השירות על ידי לחיצה על על הלחצן שיתוף החשבון הזה?
  6. האם שלחת את כתובת האימייל של חשבון השירות ואת מזהה השותף שלך אל מנהל החשבונות הטכני (TAM)?
  7. האם הקריאות שלך ל-API מעבירות אסימון שהתקבל לאחרונה ב הכותרת Authorization?
  8. האם האסימון שלך בן יותר משעה?

בטבלה הבאה מפורטות כמה שגיאות נפוצות ופתרונות אפשריים:

שגיאה תיאור
Invalid credentials יכולים להיות לכך כמה סיבות. אם נתקלתם בשגיאה הזו, צריך לבדוק אם:
  • ציינת כותרת Authorization עם ערך חוקי למוכ"ז.
  • האסימון למוכ"ז נוצר לפני פחות משעה. אסימון הוא רק טוב למשך שעה.
  • ציינת את שם השותף הנכון (עם הפרמטר partner של מחרוזת השאילתה). הערך הוא השותף הייחודי שלכם מזהה, ולא שם השותף שמופיע ב-Hotel Ads Center. אחרת יודעים מהו מזהה השותף? פנו למנהל החשבונות הטכני (TAM).
Not found סביר להניח שהפורמט של נקודת הקצה שגוי. בודקים שאתם שולחים בקשה מסוג GET וכתובת ה-URL של הבקשה תקינה (היא תואמת לתחביר ה-API שאליו אתם מנסים לגשת).
Invalid string value חלק אחד או יותר של נקודת הקצה מכילים תחביר לא חוקי. לדוגמה, ייתכן שהאיות של חלק מהנתיב שגוי. יש לוודא שהשתמשתם בתוכן הנכון קווים תחתונים, שימוש באותיות רישיות וניסוח לאורך כל הנתיב.
Unsupported output format השגיאה הזו מופיעה בדרך כלל כשמשתמשים ב-Reports API. צריך לציין את "alt=csv" בכתובת ה-URL של GET בקשה. ה-Reports API לא תומך בקובץ JSON.
AccessTokenRefreshError/Invalid grant בזמן הפעלת האפליקציה, ייתכן שהשגיאה הזו נגרמת בגלל הבאים:
  • כתובת האימייל של חשבון השירות שגויה. בודקים את האימייל בחשבון במסגרת Google מסוף Cloud וודא שיש לו הרשאה לגשת ל-API שלך.
  • אין לכתובת האימייל הזו גישה ל-API. בודקים אם האימייל לכתובת הזו יש הרשאה לגשת לנתוני המלונות שלך שמשותפים דרך Hotel Center.
  • קובץ המפתח הוא לא הקובץ הנכון לחשבון השירות. כדאי להשתמש מסוף Google Cloud כדי להוריד .JSON חדש ולוודא שהאפליקציה מפנה לכתובת הנכונה.
HotelAdsAPIConnection object has no attribute credentials כשמריצים את האפליקציה, הנתיב לקובץ .JSON הוא שגוי.
Invalid scope בזמן הפעלת האפליקציה, היקף ה-API צריך להיות אחד מהבאים:
  • &quot;https://www.googleapis.com/auth/travelpartner&quot;
  • &quot;https://travelpartnerprices.googleapis.com&quot;
  • &quot;https://www.googleapis.com/auth/travel-partner-price-upload&quot;
Forbidden מספר החשבון שבו אתם משתמשים הוא מספר שאין לכם הרשאה לגשת אליו. אם אתם בעלים של חשבון משנה, יכול להיות שאין לכם גישה מספר חשבון ההורה או חשבון הבסיס.