API の承認

このドキュメントでは、 Travel Partner API や Price などの Hotel API にアクセスする際に、 Feeds API。Using OAuth 2.0 to Access Google APIs を参照 アプリケーションを承認します。

OAuth 2.0 のセットアップ

OAuth 2.0 では、サービス アカウントを使用して本人確認を行う必要があります アクセスできます。サービス アカウントは、OAuth 2.0 アクセス トークンと引き換えに秘密鍵を送信します。その後、このトークンを 読み取り専用データ(料金、ホテル、ホテル物件など)の ホテル料金フィードに関する診断レポートデータです。

アクセス トークンは 1 時間(3,600 秒)有効です。

以前に ClientLogin を実装したことがある場合、OAuth 2.0 のアプローチもこれと類似していますが、 次の点が異なります。

  • アプリケーションは、Google サービス アカウントを使用して API にアクセスします。
  • 次の場合は、Authorization HTTP ヘッダーで OAuth 2.0 アクセス トークンを渡します。 API 呼び出し。

Hotels API で OAuth 2.0 を使用するようにアカウントを設定するには、次の手順を実施します。 手順:

  1. Google Cloud コンソールで新しいプロジェクトを作成する

  2. サービス アカウントとその認証情報を作成する

  3. サービス アカウントにホテルのデータへのアクセス権を付与する

それぞれの手順は、次のセクションで説明します。

ステップ 1: 新しい Google Cloud コンソール プロジェクトを作成する

Google Cloud コンソールは、トラフィック データの管理と表示に使用します。 認証情報、お支払い情報、お支払い情報を登録します。 あります。

Google Cloud コンソールでは、プロジェクトとは設定のコレクションであり、 認証情報、メタデータなど、操作中のアプリケーションに関する Google Developer API と Google Cloud リソースを使用します。

Google Cloud コンソールは、API 認証情報の生成、API 認証情報の有効化、 API、プロジェクトに関連付けられたチーム情報やお支払い情報の管理など)について学習します。

新しい Google Cloud コンソール プロジェクトを作成するには:

  1. Gmail または Google アカウントにログインします。

  2. Google Cloud コンソールを開きます。 プロジェクトを初めて作成する場合は、メインビューに [CREATE PROJECT] と表示されます。 ボタン:

    fig1

  3. [プロジェクトを作成] ボタンをクリックします。Google Cloud コンソールに [New Project] ダイアログ:

    fig2

    [プロジェクト名] に新しいプロジェクトのわかりやすい名前を入力します。 表示されます。Google Cloud コンソールでは、このフィールドの下にプロジェクト ID が生成されます。この ID は、すべてのプロジェクトで一意になります。たとえば 「My New Project」と入力すると、Google Cloud コンソールで my-new-project-266022

  4. [作成] ボタンをクリックして新しいプロジェクトを作成します。

  5. ナビゲーション メニューから [API とサービス >ダッシュボードをご覧ください。

    fig3

    次の図は、Google Cloud コンソールの左上にあるナビゲーション メニューを示しています。これにより、ダッシュボード ビューが表示されます。 プロジェクト:

    fig4

詳しくは、プロジェクトの作成と管理をご覧ください。

ステップ 2: サービス アカウントを作成し、その認証情報を生成する

サービス アカウントは、サーバー間のやり取りなど、 ウェブ アプリケーションとホテルデータの両方を作成します。

サービス アカウントを作成して構成するには、次の手順を行います。

  1. Google API Console のメインビューで、ブラウザの [認証情報] をクリックします。 アクセスできます。Google Cloud コンソールに [認証情報] が表示されます。 表示されます。

    [Credentials] ビューには、アプリケーションのクライアント ID と認証情報が表示されます。 できます。アプリケーションでは、リクエストの際にクライアント ID を使用して、 OAuth 2.0 アクセス トークン。新しいプロジェクトにはクライアントや認証情報がない まだです。

  2. [API とサービスの認証情報] リンクをクリックします。

  3. [認証情報を作成] ボタンをクリックし、[サービス アカウント キー] を選択します。 選択します。[サービス アカウント キーの作成] ビューが表示されます。

  4. [サービス アカウント] フィルタから [新しいサービス アカウント] を選択します。

  5. サービス アカウント名とサービス アカウント ID を入力します。

    任意の名前を指定できますが、アカウント ID は一意である必要があります 自動的に適用されます。Google Cloud コンソールでは、入力した名前に基づいて一意のアカウント ID が生成されます。

  6. 鍵のタイプとして [JSON] を選択します。JSON は必須です

  7. [Create] ボタンをクリックします。Google Cloud コンソールでは、限定公開または 公開鍵ペアが必要です。秘密鍵はデフォルトの ダウンロードの保存場所を指定します。 .JSON 形式のファイルをダウンロードする必要があります

    秘密鍵は、アクセスするスクリプトやアプリケーション内で使用する できます。

    Google Cloud コンソールに「サービス アカウントを作成しました」と表示されるメッセージに キーの生成を終了します。

  8. [OK] ボタンをクリックします。Google Cloud コンソールが [認証情報] ビューに戻ります。サービス アカウントの詳細を確認し、 プロジェクトに関連付けられたサービス アカウントを表示するには、[Manage サービス アカウント

    これで、サービス アカウントに次の認証情報が関連付けられました。

    • クライアント ID: 次の場合にアプリケーションが使用する一意の識別子。 OAuth 2.0 アクセス トークンをリクエストします。
    • メールアドレス: サービス アカウントに生成されたメールアドレス( フォーム "account_name[アカウント名]@account_name[プロジェクト名].google.com.iam.gserviceaccount.com
    • 証明書フィンガープリント: 使用する秘密鍵の ID ダウンロードされます。
で確認できます。

詳細については、サーバー間アプリケーションに OAuth 2.0 を使用するをご覧ください。

ステップ 3: サービス アカウントに Hotel Center データへのアクセス権を付与する

最後のステップでは、新しいサービス アカウントに、 Hotel Center生成されたメールアドレスで識別され、 前のステップで作成したものが表示されます。このアカウントへのアクセスには、 Hotel Center の共有設定。

ユーザーをアカウントに追加するための適切なアクセス権がない場合は、 Google ホテルチームからお問い合わせフォームを使用して、 ログインします。オーナー宛てのメールをリクエストできます。 Hotel Center へのアクセスについて詳しくは、Hotel Center と Google 広告をリンクするをご覧ください。

サービス アカウントに Hotel Center のデータへのアクセス権を付与するには:

  1. 新しいブラウザ ウィンドウで、Hotel Center を開きます。 fig7

  2. [Hotel Center by Google] バナーで、ユーザー追加アイコンをクリックして開きます。 共有ダイアログを開きます。

    fig8

  3. [ユーザーを追加] フィールドに、サービスのメールアドレスを入力します。 Hotel Center に追加するアカウントを選択します。

  4. [通知] オプションを選択したままにします。

  5. フィルタから [管理] を選択します。

  6. [招待] ボタンをクリックします。

  7. Hotel Center にユーザーを追加すると、サービス アカウントが有効になります。 約 24 時間以内に API アクセスできるようになります。

サービスの API アクセスが有効になったことを Google が通知した後 OAuth 2.0 で API にアクセスできます。

OAuth 2.0 の使用方法

API にアクセスするには、サービス アカウントで生成されたメールアドレスと秘密鍵を使用して、アプリケーションが Google に対して自身を識別する必要があります。Google の 認証メカニズムはこのキーを OAuth 2.0 アクセス トークンと交換し、 アプリの API 呼び出しで Authorization ヘッダーを渡します。

委任された API 呼び出しの準備をするをご覧ください。

スコープ

Hotels API の SCOPES は次のとおりです。

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

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

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://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 を使用すると、Hotel Center を取得できます。 Hotel Center のデータを変更して、大規模なアカウントや複雑なアカウントを管理できます。

OAUTH 2.0 のセットアップの手順に沿って、認証を取得します。 Travel Partner API を使用します

Travel Partners API 用の新しいプロジェクトを作成するときは、アクセスを有効にする必要があります 新しい Google Cloud コンソール プロジェクトに追加します。

Travel Partners API へのアクセスを有効にする手順は次のとおりです。

  1. プロジェクトの [ダッシュボード] ビューに移動します。

  2. [API とサービスの有効化] をクリックします。[API ライブラリのようこそ] が表示されます。 できます。

  3. 検索フィールドに「Travel Partner API」と入力すると、コンソールが表示されます 入力した内容に一致する API のリストが表示されます。

  4. 表内で一致する API をクリックします。Google Cloud コンソールに 説明があります。

  5. [API を有効にする] ボタンをクリックして、プロジェクトでこの API を有効にします。

詳細については、サービスの有効化と無効化をご覧ください。

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>"

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」と有効にする できます。

Travel Partner Prices API のスコープは次のとおりです。 "https://travelpartnerprices.googleapis.com"

Travel Partner Prices API のアップロード パス: "/travel/lodging/uploads/accounts/<account_id>/property_data"

Price Feeds API

Price Feeds API を使用すると、宿泊施設のパートナーは、 予約できますGoogle の宿泊施設パートナーは OAuth2.0 を使用して認証と 価格を Google にアップロードする際に承認します。OAUTH 2.0 に準拠 Price Feeds API の承認を得るための手順。

注意点

料金フィードの認証手順における重要な違いにご注意ください API

  1. パートナー様は、新しい料金フィード OAuth2.0 プロジェクトを作成する必要があります OAuth 2.0 の設定で説明した手順に沿って操作します。

  2. Google Cloud コンソールで Price Feeds API を有効にすることは不要です。 無視してかまいません。必要なサービス アカウントは 1 つのみで、使用して、同じ Pod の サービス アカウントと料金フィード プロジェクトにホテルへのアクセス権を付与するためのキー 。OAuth2.0 のセットアップの残りの手順に沿って、以下を行います。 API の構成を完了できます。

料金フィード用の OAuth2.0 アクセス トークンを取得する

次のステップでは、宿泊料金のアップロードを使用して OAuth2.0 アクセス トークンを取得します。 サービス アカウント キー ファイルを使用してスコープを設定します。アプリケーション サーバーへのリクエストを 料金フィード プロジェクトを作成する 委任 API 呼び出しの準備 取得した認証情報からアクセス トークンを抽出し、それを "Authorization" HTTP ヘッダー。

宿泊料金のアップロードのスコープは次のとおりです。 "https://www.googleapis.com/auth/travel-partner-price-upload"

価格のアップロード

アクセス トークンを取得した後、パートナー様は、 静的 IP を使用した認証と認可、 変更:

  • "Authorization" HTTP ヘッダーにアクセス トークンを設定する
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 設定をテストする

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 ファイル(クリックした後に秘密鍵)をダウンロードしましたか? クライアント ID を作成して [サービス アカウント] を選択します。
  4. サービス アカウント クライアント ID のメールアドレス(nnnnnnn@app_name.google.com.iam.gserviceaccount.com の形式)を取得しましたか?
  5. 次のボタンをクリックして、Hotel Ads Center アカウントをサービス アカウントと共有しましたか。 [このアカウントを共有] ボタンか?
  6. サービス アカウントのメールアドレスとパートナー ID の送信先は、 担当のテクニカル アカウント マネージャー(TAM)
  7. API 呼び出しで、最近取得したトークンが Authorization ヘッダーで渡されていますか?
  8. トークンの発行後 1 時間以上経過していますか?

次の表に、一般的なエラーと可能な解決策を示します。

エラー 説明
Invalid credentials さまざまな原因が考えられます。このエラーが発生した場合は 次のことを確認します。
  • 有効な Authorization ヘッダーを指定した。 トークン。
  • 署名なしトークンが生成後 1 時間未満。トークンは 1 時間です。
  • partner クエリ文字列パラメータを使用して)正しいパートナー名を指定した。この値は、Hotel Ads Center に表示されるパートナー名ではなく、一意のパートナー ID です。この操作を パートナー ID がわからない場合は、テクニカル アカウント マネージャー(TAM)にお問い合わせください。
Not found エンドポイントの形式が正しくない可能性があります。送信内容を確認する GET リクエストであること、リクエスト URL が有効( (アクセスしようとしている API 構文にマッピングされます)。
Invalid string value エンドポイントの 1 つ以上の部分に無効な構文が含まれています。たとえば スペルミスがある可能性がありますパス全体で、アンダースコア、大文字、単語が正しく使用されていることを確認します。
Unsupported output format このエラーは、Reports API の使用中によく発生します。必要なこと GET の URL に "alt=csv" を指定する リクエストできます。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 使用しているアカウント ID は承認されていないアカウント ID です あります。サブアカウントの所有者は、 親アカウントまたはルートアカウント ID です