API 승인

이 문서에서는 OAuth2.0을 Travel Partner API, Price와 같은 호텔 API에 액세스할 때 애플리케이션 feed API를 사용합니다. 자세한 내용은 OAuth 2.0을 사용하여 Google API에 액세스를 참조하세요. 애플리케이션을 승인해야 합니다

OAuth 2.0 설정

OAuth 2.0을 사용하려면 서비스 계정을 사용하여 본인 확인을 해야 합니다. Google 계정과 연결되어 있어야 합니다. 서비스 계정은 키를 사용하는 대신 OAuth 2.0 액세스 토큰을 사용할 수 있습니다. 그런 다음 이 토큰을 사용하여 읽기 전용 데이터에 대한 호텔 API 호출(가격, 호텔, 호텔 가격 피드에 대한 진단 보고 데이터를 제공합니다.

액세스 토큰은 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 API에 대한 인증, 결제 정보 사용합니다

Google Cloud 콘솔에서 프로젝트는 설정의 모음입니다. 사용자 인증 정보 및 작업 중인 애플리케이션에 대한 메타데이터 Google Developer API 및 Google Cloud 리소스를 사용합니다.

Google Cloud 콘솔은 API 사용자 인증 정보를 생성하고, API, 프로젝트 관련 팀 및 결제 정보 관리

새 Google Cloud 콘솔 프로젝트를 만들려면 다음 안내를 따르세요.

  1. Gmail 또는 Google 계정에 로그인합니다.

  2. Google Cloud 콘솔을 엽니다.  첫 번째 프로젝트인 경우 기본 뷰에 CREATE PROJECT가 표시됩니다. 버튼:

    fig1

  3. 프로젝트 만들기 버튼을 클릭합니다. Google Cloud 콘솔에는 New Project 대화상자:

    fig2

    프로젝트 이름에 새 프로젝트의 친숙한 이름을 입력합니다. 입력합니다. 필드 아래에서 Google Cloud 콘솔이 프로젝트를 생성합니다. 모든 프로젝트에서 ID가 고유한지 확인합니다. 예를 들어 'My New Project'를 입력하면 Google Cloud 콘솔은 my-new-project-266022

  4. 만들기 버튼을 클릭하여 새 프로젝트를 만듭니다.

  5. 탐색 메뉴에서 API 및 서비스 > 대시보드를 클릭합니다.

    fig3

    다음 이미지는 왼쪽 상단의 탐색 메뉴를 보여 줍니다. Google Cloud 콘솔 이렇게 하면 기기의 대시보드 보기가 표시됩니다. 프로젝트:

    fig4

자세한 내용은 프로젝트 만들기 및 관리를 참고하세요.

2단계: 서비스 계정 만들기 및 사용자 인증 정보 생성

서비스 계정은 서버 간 상호작용에 사용됩니다. 호텔 데이터를 관리할 수 있습니다.

서비스 계정을 만들고 구성하려면 다음 안내를 따르세요.

  1. Google API 콘솔 기본 보기에서 Credentials를 클릭합니다. 왼쪽 탐색 메뉴를 클릭합니다. Google Cloud 콘솔에 사용자 인증 정보가 표시됩니다. 합니다.

    사용자 인증 정보 보기에는 살펴보겠습니다 애플리케이션은 OAuth 2.0 액세스 토큰입니다. 새 프로젝트에 클라이언트 또는 사용자 인증 정보가 없습니다. 있습니다.

  2. API 및 서비스의 사용자 인증 정보 링크를 클릭합니다.

  3. 사용자 인증 정보 만들기 버튼을 클릭하고 서비스 계정 키를 선택합니다. 삭제할 수 있습니다. 서비스 계정 키 만들기 뷰가 표시됩니다.

  4. 서비스 계정 필터에서 새 서비스 계정을 선택합니다.

  5. 서비스 계정 이름과 서비스 계정 ID를 입력합니다.

    원하는 이름을 지정할 수 있지만 계정 ID는 고유해야 합니다. 전체 프로젝트입니다 Google Cloud 콘솔에서 입력한 이름을 기반으로 고유한 계정 ID를 생성합니다.

  6. 키 유형으로 JSON을 선택합니다. JSON이 필요합니다.

  7. 만들기 버튼을 클릭합니다. Google Cloud 콘솔은 비공개 또는 공개 키 쌍입니다. 비공개 키는 브라우저에서 다운로드 저장 위치를 저장하는 데 사용됩니다 .JSON 형식 파일을 다운로드해야 합니다.

    스크립트 또는 API에 액세스하는 다른 애플리케이션에서 API에 액세스할 수 있습니다

    Google Cloud 콘솔에 '서비스 계정 생성됨'이 표시됩니다. 메시지가 표시될 때 키 생성을 완료합니다.

  8. 확인 버튼을 클릭합니다. Google Cloud 콘솔이 사용자 인증 정보 뷰로 돌아갑니다. 서비스 계정에 대한 세부정보 및 프로젝트와 연결된 서비스 계정을 보려면 관리 서비스 계정이 표시됩니다.

    이제 서비스 계정에 다음과 같은 사용자 인증 정보가 연결되어 있습니다.

    • 클라이언트 ID: 애플리케이션에서 사용하는 고유 식별자입니다. 요청할 때 사용할 수 있습니다
    • 이메일 주소: 서비스 계정을 위해 양식 '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 Ads 연결하기를 참고하세요.

서비스 계정에 Hotel Center 데이터에 대한 액세스 권한을 부여하려면 다음 안내를 따르세요.

  1. 새 브라우저 창에서 호텔 센터를 엽니다. fig7

  2. Hotel Center by Google 배너에서 사용자 추가 아이콘을 클릭하여 엽니다. 공유할 수 있습니다.

    fig8

  3. 사용자 추가 필드에 서비스의 이메일 주소를 입력합니다. Hotel Center에 추가할 계정

  4. 이메일 알림 보내기 옵션을 선택된 상태로 둡니다.

  5. 필터에서 관리를 선택합니다.

  6. 초대 버튼을 클릭합니다.

  7. Hotel Center에 사용자를 추가한 후 서비스 계정이 사용 설정됩니다. 약 24시간 이내에 API 액세스 권한을 요청합니다.

Google에서 서비스 계정에 API 액세스가 사용 설정되었다고 알리면 OAuth 2.0으로 API에 액세스할 수 있습니다.

OAuth 2.0 사용 방법

API에 액세스하려면 애플리케이션이 서비스 계정에서 생성된 이메일 주소와 비공개 키를 사용합니다. Google의 인증 메커니즘이 이 키를 OAuth 2.0 액세스 토큰으로 교환합니다. 앱의 API 호출에서 Authorization 헤더를 전달합니다.

위임된 API 호출 준비를 참고하세요.

범위

Hotels API의 SCOPES는 다음과 같습니다.

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

여행 파트너 가격 API: "https://travelpartnerprices.googleapis.com"

Price Feeds API: "https://www.googleapis.com/auth/travel-partner-price-upload"

사용자 인증 정보를 만들 때 서비스 계정을 지정해야 합니다. 다음을 참고하세요. 서비스 계정을 만들고 사용자 인증 정보를 생성합니다.

애플리케이션을 개발할 때 다음 권장사항을 따르세요. 애플리케이션을 인증할 수 있습니다 자세히 알아보기

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

숙박 파트너가 Hotel Center를 가져올 수 있는 Travel Partner API 정보를 변경하고 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 콘솔에는 해당 API에 대한 설명입니다.

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

여행 파트너 가격 API

Travel Partner Price API를 사용하면 숙박 시설 파트너가 숙박 시설 가격을 전송할 수 있습니다. Google 숙박 기간 (LoS) 가격 책정이라고도 합니다.

OAUTH 2.0 설정 안내에 따라 Travel Partner Prices API 승인을 받습니다.

Travel Partners 가격 API를 위해 새 프로젝트를 만들 때는 다음과 같은 작업을 수행해야 합니다. 새 Google Cloud 콘솔 프로젝트에 대한 액세스를 사용 설정합니다. 안내를 참조하세요.

Travel Partner API에 제공된 단계 및 대체 항목을 참고하세요. 'Travel Partner API'의 모든 인스턴스 'Travel PartnerPricing API' 사용 사용 설정 살펴보겠습니다

Travel Partner Price API의 범위는 다음과 같습니다. "https://travelpartnerprices.googleapis.com"

Travel Partner Price API의 업로드 경로는 다음과 같습니다. "/travel/lodging/uploads/accounts/<account_id>/property_data"

가격 피드 API

Price 피드 API를 사용하면 숙박 시설 파트너가 있습니다. Google 숙박 시설 파트너는 Google에 가격을 업로드할 때 OAuth2.0을 사용하여 자체 인증 및 승인할 수 있습니다. OAUTH 2.0을 따릅니다. 설정 안내를 따라 가격 피드 API에 대한 승인을 받으세요.

기억해야 할 사항

Price Feeds API 승인 안내의 중요한 차이점에 유의하세요.

  1. 파트너는 새 가격 피드 OAuth2.0 프로젝트를 만들어야 합니다. OAuth 2.0 설정에 제공된 것과 동일한 안내에 따라 Google Cloud 콘솔에서 OAuth 2.0을 사용할 수 있습니다.

  2. Google Cloud 콘솔에서 Price Feed API를 사용 설정할 필요는 없습니다. 무시할 수 있습니다 서비스 계정과 키는 하나만 있으면 되며, 동일한 서비스 계정과 키를 사용하여 Price Feeds 프로젝트에 Hotel Center 데이터에 대한 액세스 권한을 부여합니다. 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 피드 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. 다음을 클릭하여 호텔 광고 센터 계정을 서비스 계정과 공유했나요? 이 계정을 공유 버튼을 클릭하시겠습니까?
  6. 서비스 계정의 이메일 주소와 파트너 ID를 담당 기술계정 관리자 (TAM)에게 문의하셨나요?
  7. API 호출이 Authorization 헤더?
  8. 토큰을 생성한 지 1시간이 지났습니까?

다음 표에는 일반적인 오류와 가능한 해결 방법이 나와 있습니다.

오류 설명
Invalid credentials 이는 다양한 상황을 의미할 수 있습니다. 이 오류가 발생하면 다음을 확인하세요.
  • Authorization 헤더를 올바른 값으로 지정했습니다. Bearer 토큰입니다.
  • Bearer 토큰이 생성된 지 1시간이 지나지 않았습니다. 토큰은 좋은 토큰 1시간 동안 표시됩니다
  • 올바른 파트너 이름을 지정했습니다 (partner 쿼리 문자열 매개변수 사용). 고유한 파트너 가치 호텔 광고 센터에 표시되는 파트너 이름이 아닌 ID 그렇지 않은 경우 파트너 ID를 알고 있는 경우 기술계정 관리자 (TAM)에게 문의하세요.
Not found 엔드포인트의 형식이 잘못되었을 가능성이 높습니다. 제출 여부 확인 GET 요청인지 확인하고, 요청 URL이 유효한지 를 추가하는 것이 좋습니다.
Invalid string value 엔드포인트의 하나 이상의 부분에 잘못된 구문이 포함되어 있습니다. 예를 들어 경로의 일부를 잘못 썼을 수 있습니다. 전체 경로에서 올바른 하이픈, 대문자, 단어를 사용했는지 확인합니다.
Unsupported output format 이 오류는 Reports API를 사용할 때 가장 흔히 발생합니다. 다음을 수행해야 합니다. GET의 URL에 "alt=csv"를 지정합니다. 합니다. Reports API는 JSON을 지원하지 않습니다.
AccessTokenRefreshError/Invalid grant 앱을 실행할 때 이 오류는 다음과 같은 이유로 발생할 수 있습니다. 있습니다.
  • 서비스 계정 이메일 주소가 잘못되었습니다. 이메일 확인 계정을 Google은 Cloud 콘솔 로 이동하여 API에 액세스할 수 있는 권한이 있는지 확인합니다.
  • 이메일 주소에 API 액세스 권한이 없습니다. 이메일 주소는 공유되는 호텔 데이터에 액세스할 수 있도록 Hotel Center를 통해 결제합니다.
  • 키 파일이 서비스 계정에 맞는 파일이 아닙니다. 사용 새 .JSON를 다운로드할 수 있는 Google Cloud 콘솔 앱이 올바른 인증서를 가리키고 있는지 확인합니다.
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입니다.