مجوز API

این مستندات دستورالعمل‌های گام به گام را برای راه‌اندازی OAuth2.0 در برنامه شما هنگام دسترسی به APIهای هتل مانند Travel Partner API و Price Feeds API ارائه می‌دهد. برای تأیید برنامه خود به استفاده از OAuth 2.0 برای دسترسی به APIهای Google مراجعه کنید.

راه اندازی OAuth 2.0

OAuth 2.0 مستلزم این است که خود را با استفاده از یک حساب سرویس مرتبط با حساب Google خود شناسایی کنید. حساب سرویس کلید خصوصی شما را در ازای توکن دسترسی OAuth 2.0 ارسال می کند. سپس می‌توانید از این نشانه در تماس‌های با APIهای هتل برای داده‌های فقط خواندنی ، مانند داده‌های قیمت‌گذاری، هتل و گزارش‌های تشخیصی درباره فید قیمت هتل خود استفاده کنید.

توکن های دسترسی برای یک ساعت (3600 ثانیه) خوب هستند.

اگر قبلا ClientLogin را اجرا کرده اید، رویکرد OAuth 2.0 مشابه است، با تفاوت های زیر:

  • برنامه شما از یک حساب سرویس Google برای دسترسی به API استفاده می کند.
  • هنگام فراخوانی APIها، یک نشانه دسترسی OAuth 2.0 را در سرصفحه Authorization HTTP ارسال می کنید.

برای تنظیم حساب خود برای استفاده از OAuth 2.0 با هر API هتل، این مراحل را انجام دهید:

  1. یک پروژه جدید در کنسول Google Cloud ایجاد کنید

  2. یک حساب سرویس و اعتبار آن ایجاد کنید

  3. به حساب سرویس خود اجازه دسترسی به داده های هتل خود را بدهید

هر یک از این مراحل در بخش های بعدی توضیح داده شده است.

مرحله 1: یک پروژه کنسول Google Cloud جدید ایجاد کنید

کنسول Google Cloud برای مدیریت و مشاهده داده‌های ترافیک، احراز هویت و اطلاعات صورت‌حساب برای APIهای Google که پروژه‌های شما استفاده می‌کنند استفاده می‌شود.

در کنسول Google Cloud، پروژه مجموعه‌ای از تنظیمات، اعتبارنامه‌ها و ابرداده‌های مربوط به برنامه‌ای است که روی آن کار می‌کنید و از APIهای برنامه‌نویس Google و منابع Google Cloud استفاده می‌کند.

کنسول Google Cloud همچنین برای تولید اعتبار API، فعال کردن APIها و مدیریت تیم و اطلاعات صورتحساب مرتبط با پروژه شما استفاده می‌شود.

برای ایجاد یک پروژه کنسول Google Cloud جدید:

  1. وارد حساب کاربری جیمیل یا گوگل خود شوید.

  2. کنسول Google Cloud را باز کنید. اگر این اولین پروژه شماست، نمای اصلی یک دکمه CREATE PROJECT را نمایش می دهد:

    شکل 1

  3. روی دکمه CREATE PROJECT کلیک کنید. کنسول Google Cloud گفتگوی پروژه جدید را نمایش می دهد:

    شکل 2

    در قسمت ورودی نام پروژه یک نام مناسب برای پروژه جدید خود وارد کنید. در زیر فیلد، کنسول Google Cloud یک شناسه پروژه برای شما ایجاد می‌کند و اطمینان می‌دهد که شناسه در همه پروژه‌ها منحصربه‌فرد است. به عنوان مثال، اگر «پروژه جدید من» را وارد کنید، کنسول Google Cloud یک شناسه مانند my-new-project-266022 اختصاص می‌دهد.

  4. برای ایجاد پروژه جدید خود روی دکمه Create کلیک کنید.

  5. از منوی پیمایش برای انتخاب APIs & Services > Dashboard استفاده کنید.

    شکل 3

    تصویر زیر منوی ناوبری را در سمت چپ بالای کنسول Google Cloud نشان می دهد. این نمای داشبورد پروژه شما را نشان می دهد:

    شکل 4

برای اطلاعات بیشتر به ایجاد و مدیریت پروژه ها مراجعه کنید.

مرحله 2: یک حساب کاربری ایجاد کنید و اعتبار آن را ایجاد کنید

حساب های سرویس توسط تعاملات سرور به سرور مانند تعاملات بین یک برنامه وب و داده های هتل شما استفاده می شود.

برای ایجاد و پیکربندی یک حساب سرویس:

  1. در نمای اصلی Google API Console، روی Credentials در ناوبری سمت چپ کلیک کنید. کنسول Google Cloud نمای اعتبارنامه را نمایش می دهد.

    نمای Credentials شناسه های مشتری و اعتبارنامه های پروژه شما را نشان می دهد. برنامه شما هنگام درخواست رمز دسترسی OAuth 2.0 از شناسه مشتری استفاده می کند. پروژه های جدید هنوز هیچ مشتری یا اعتباری ندارند.

  2. روی پیوند اعتبارنامه‌ها در APIها و خدمات کلیک کنید.

  3. روی دکمه Create credentials کلیک کنید و از فیلتر گزینه Service account key را انتخاب کنید. نمای کلید Create account account نمایش داده می شود.

  4. از فیلتر حساب سرویس ، حساب سرویس جدید را انتخاب کنید.

  5. نام حساب سرویس و شناسه حساب سرویس را وارد کنید.

    نام می تواند هر چیزی باشد که شما می خواهید، اما شناسه حساب باید در همه پروژه ها منحصر به فرد باشد. کنسول Google Cloud بر اساس نامی که وارد کرده اید، یک شناسه حساب منحصر به فرد برای شما ایجاد می کند.

  6. JSON را برای نوع کلید انتخاب کنید. JSON مورد نیاز است .

  7. روی دکمه Create کلیک کنید. کنسول Google Cloud یک جفت کلید خصوصی یا عمومی برای پروژه شما ایجاد می کند. کلید خصوصی در مکان پیش فرضی که مرورگر شما دانلودها را ذخیره می کند، ذخیره می شود. شما باید فایل با فرمت .JSON را دانلود کنید .

    شما از کلید خصوصی در اسکریپت ها یا سایر برنامه هایی که به API شما دسترسی دارند استفاده می کنید.

    کنسول Google Cloud پس از اتمام تولید کلیدها، پیام "حساب سرویس ایجاد شد" را نمایش می دهد.

  8. روی دکمه OK, got it کلیک کنید. کنسول Google Cloud شما را به نمای اعتبارنامه باز می گرداند. برای تأیید جزئیات مربوط به حساب سرویس خود و دیدن حساب سرویس مرتبط با پروژه خود، روی مدیریت حساب های خدماتی در این نما کلیک کنید.

    حساب سرویس اکنون دارای اعتبار زیر است:

    • شناسه مشتری: یک شناسه منحصربه‌فرد که برنامه شما هنگام درخواست نشانه دسترسی OAuth 2.0 از آن استفاده می‌کند.
    • آدرس ایمیل: یک آدرس ایمیل ایجاد شده برای حساب سرویس، به شکل " account_name @ project_name .google.com.iam.gserviceaccount.com".
    • اثر انگشت گواهی: شناسه کلید خصوصی که دانلود کرده اید.

برای اطلاعات بیشتر، به استفاده از OAuth 2.0 برای برنامه های کاربردی سرور به سرور مراجعه کنید.

مرحله 3: به حساب خدمات اجازه دسترسی به اطلاعات مرکز هتل خود را بدهید

مرحله آخر این است که حساب سرویس جدید را با دسترسی به مرکز هتل خود ارائه دهید. حساب سرویس با آدرس ایمیل ایجاد شده ای که در مرحله قبل ایجاد کردید شناسایی می شود. با استفاده از تنظیمات اشتراک‌گذاری مرکز هتل، دسترسی به این حساب را فراهم می‌کنید.

اگر دسترسی مناسبی برای افزودن کاربران به حساب ندارید، با استفاده از فرم تماس با ما با تیم Google Hotels تماس بگیرید و درخواست کنید که مالکیت حساب خود را تنظیم کنید. می‌توانید درخواست کنید که یک یا چند ایمیل به مالک ارسال شود. برای اطلاعات بیشتر در مورد دسترسی به مرکز هتل، به لینک مرکز هتل و تبلیغات گوگل مراجعه کنید.

برای دسترسی یک حساب سرویس به داده های مرکز هتل خود:

  1. در یک پنجره مرورگر جدید، مرکز هتل را باز کنید.شکل 7

  2. در بنر Hotel Center by Google ، روی نماد افزودن کاربر کلیک کنید تا گفتگوی اشتراک‌گذاری باز شود.

    شکل 8

  3. در قسمت افزودن افراد بیشتر ، آدرس ایمیل حساب خدماتی را که می‌خواهید به مرکز هتل خود اضافه کنید وارد کنید.

  4. گزینه Notify people را انتخاب نگه دارید.

  5. مدیریت را از فیلتر انتخاب کنید.

  6. روی دکمه دعوت کلیک کنید.

  7. پس از اینکه کاربران را به مرکز هتل خود اضافه کردید، حساب سرویس شما باید در عرض 24 ساعت برای دسترسی به API فعال شود.

پس از اینکه Google به شما اطلاع داد که دسترسی به API برای حساب سرویس شما فعال شده است، می توانید با OAuth 2.0 به API دسترسی پیدا کنید.

نحوه استفاده از OAuth 2.0

برای دسترسی به API، برنامه شما باید خود را با آدرس ایمیل و کلید خصوصی ایجاد شده حساب سرویس در گوگل شناسایی کند. مکانیسم احراز هویت Google این کلید را با یک نشانه دسترسی OAuth 2.0 که در هدر Authorization در تماس‌های API برنامه خود ارسال می‌کنید، مبادله می‌کند.

برای برقراری تماس API واگذار شده به آماده سازی مراجعه کنید.

محدوده ها

موارد زیر SCOPES برای API هتل ها هستند:

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

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

API Feeds Price: "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)

Travel Partner API

Travel Partner API به شرکای اقامتی اجازه می دهد تا اطلاعات مرکز هتل را بازیابی کنند و داده های مرکز هتل را برای مدیریت حساب های بزرگ یا پیچیده تغییر دهند.

دستورالعمل های راه اندازی OAUTH 2.0 را برای دریافت مجوز برای Travel Partner API خود دنبال کنید.

وقتی یک پروژه جدید برای Travel Partners 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 شما فعال شده است.

دامنه API Travel Partner این است: "https://www.googleapis.com/auth/travelpartner"

نقطه پایانی برای Travel Partner API این است: "https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"

Travel Partner Prices API

Travel Partner Prices API به شرکای اقامتی اجازه می دهد تا قیمت ملک را به Google ارسال کنند. به آن قیمت گذاری (LoS) نیز گفته می شود.

دستورالعمل‌های راه‌اندازی OAUTH 2.0 را برای دریافت مجوز برای Travel Partner Prices API خود دنبال کنید.

وقتی پروژه جدیدی برای Travel Partners Prices API ایجاد می‌کنید، باید دسترسی به پروژه کنسول Google Cloud جدید خود را فعال کنید که مشابه دستورالعمل‌های ارائه شده در Travel Partner API است.

به مراحل ارائه شده در Travel Partner API مراجعه کنید و برای فعال کردن پروژه خود، همه نمونه های "Travel Partner API" را با "Travel Partner Prices API" جایگزین کنید.

دامنه API Travel Partner Prices عبارت است از: "https://travelpartnerprices.googleapis.com"

مسیر آپلود برای Travel Partner Prices API این است: "/travel/lodging/uploads/accounts/<account_id>/property_data"

API Feeds Price

Price Feeds API به شرکای اقامتی اجازه می دهد تا داده های قیمت گذاری سفارشی را برای هر هتل ارائه دهند. شرکای اقامتگاه Google می توانند از OAuth2.0 برای احراز هویت و تأیید اعتبار هنگام آپلود قیمت ها در Google استفاده کنند. دستورالعمل های راه اندازی OAUTH 2.0 را برای دریافت مجوز برای Price Feeds API دنبال کنید.

نکاتی که باید به خاطر بسپارید

به تفاوت های مهم در دستورالعمل های مجوز برای Price Feeds API توجه کنید.

  1. شرکا باید با استفاده از همان دستورالعمل‌هایی که در راه‌اندازی OAuth 2.0 ارائه شده است، یک پروژه Price Feeds OAuth2.0 در کنسول Google Cloud ایجاد کنند.

  2. فعال کردن API Feeds Price در کنسول Google Cloud الزامی نیست و می توان آن را نادیده گرفت. شما فقط به یک حساب و کلید خدمات نیاز دارید و سپس از همان حساب و کلید سرویس استفاده کنید تا به پروژه Price Feeds دسترسی به داده‌های مرکز هتل خود بدهید. مراحل باقی مانده ذکر شده در تنظیمات OAuth2.0 را برای تکمیل پیکربندی API خود دنبال کنید.

رمز دسترسی OAuth2.0 را برای فیدهای قیمت دریافت کنید

گام بعدی دریافت رمز دسترسی OAuth2.0 با دامنه بارگذاری قیمت اقامتگاه با استفاده از فایل کلید حساب سرویس است. می‌توانید با پیروی از دستورالعمل‌های ارائه‌شده در آماده‌سازی برای برقراری تماس API واگذار شده، درخواست‌ها را برای پروژه Feeds قیمت خود تأیید کنید و سپس رمز دسترسی را از اعتبارنامه‌های کسب‌شده استخراج کنید و آن را در سرصفحه 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. آیا با کلیک روی دکمه اشتراک‌گذاری این حساب، حساب مرکز تبلیغات هتل خود را با حساب خدمات به اشتراک گذاشتید؟
  6. آیا آدرس ایمیل حساب سرویس و شناسه شریک خود را برای مدیر حساب فنی خود (TAM) ارسال کردید؟
  7. آیا تماس‌های API شما رمزی را که اخیراً در سربرگ Authorization دریافت کرده‌اید ارسال می‌کند؟
  8. آیا توکن شما بیش از 1 ساعت قدمت دارد؟

جدول زیر برخی از خطاهای رایج و رزولوشن های احتمالی را فهرست می کند:

خطا توضیحات
Invalid credentials این می تواند به معنای چند چیز باشد. اگر با این خطا مواجه شدید، بررسی کنید:
  • شما یک سرصفحه Authorization با یک توکن حامل معتبر مشخص کرده‌اید.
  • سن حامل کمتر از یک ساعت است. یک توکن فقط برای یک ساعت خوب است.
  • شما نام شریک صحیح (با پارامتر رشته کوئری partner ) را مشخص کردید. مقدار، شناسه شریک منحصر به فرد شما است، نه نام شریک شما که در مرکز تبلیغات هتل ظاهر می شود. اگر شناسه شریک خود را نمی دانید، با مدیر حساب فنی خود (TAM) تماس بگیرید.
Not found به احتمال زیاد نقطه پایانی شما نادرست است. بررسی کنید که درخواست GET ارسال می‌کنید و URL درخواست معتبر است (با نحو API که می‌خواهید به آن دسترسی پیدا کنید مطابقت دارد).
Invalid string value یک یا چند قسمت از نقطه پایانی دارای نحو نامعتبر است. برای مثال، ممکن است قسمتی از مسیر را اشتباه نوشته باشید. بررسی کنید که در کل مسیر خود از زیرخط، حروف بزرگ و جمله بندی صحیح استفاده کرده اید.
Unsupported output format این خطا معمولاً هنگام استفاده از Reports API رخ می دهد. شما باید "alt=csv" را در URL درخواست GET خود مشخص کنید. API Reports از JSON پشتیبانی نمی کند.
AccessTokenRefreshError/Invalid grant هنگام اجرای برنامه، ممکن است این خطا به دلایل زیر ایجاد شود:
  • آدرس ایمیل حساب سرویس شما نادرست است. حساب ایمیل موجود در کنسول Google Cloud را بررسی کنید و مطمئن شوید که مجوز دسترسی به API شما را دارد.
  • آدرس ایمیل دسترسی API ندارد. بررسی کنید آیا آدرس ایمیل مجاز به دسترسی به داده‌های هتل‌های شما است که از طریق مرکز هتل به اشتراک گذاشته می‌شود.
  • فایل کلید برای حساب سرویس درست نیست. از کنسول Google Cloud برای دانلود گواهی .JSON جدید استفاده کنید و مطمئن شوید که برنامه شما به سمت راست اشاره می کند.
HotelAdsAPIConnection object has no attribute credentials هنگام اجرای برنامه، مسیر فایل .JSON شما نادرست است.
Invalid scope هنگام اجرای برنامه، محدوده API شما باید یکی از موارد زیر باشد:
  • "https://www.googleapis.com/auth/travelpartner"
  • "https://travelpartnerprices.googleapis.com"
  • "https://www.googleapis.com/auth/travel-partner-price-upload"
Forbidden شناسه حسابی که استفاده می‌کنید، شناسه‌ای است که مجوز دسترسی به آن را ندارید. اگر صاحب حساب فرعی هستید، ممکن است نتوانید به شناسه حساب والد یا ریشه دسترسی داشته باشید.