Autorização da API

Esta documentação fornece instruções detalhadas para configurar o OAuth2.0 no seu aplicativo ao acessar as APIs de hotéis, como a API Travel Partner e a API Price Feeds. Consulte Como usar o OAuth 2.0 para acessar as APIs do Google e autorize seu aplicativo.

Configuração do OAuth 2.0

O OAuth 2.0 exige que você se identifique usando uma conta de serviço associada à sua Conta do Google. A conta de serviço envia sua chave privada em troca de um token de acesso do OAuth 2.0. Em seguida, use esse token em chamadas para as APIs de hotéis para dados de somente leitura, como preços, hotéis e dados de relatórios de diagnóstico sobre seu feed de preços de hotéis.

Os tokens de acesso são válidos por uma hora (3.600 segundos).

Se você já implementou o ClientLogin, a abordagem do OAuth 2.0 é semelhante, com as seguintes diferenças:

  • Seu aplicativo usa uma conta de serviço do Google para acessar a API.
  • Você transmite um token de acesso do OAuth 2.0 no cabeçalho HTTP Authorization ao chamar APIs.

Para configurar sua conta e usar o OAuth 2.0 com qualquer API Hotels, siga estas etapas:

  1. Crie um projeto no console do Google Cloud

  2. Crie uma conta de serviço e as credenciais de acesso.

  3. Conceder acesso aos dados do hotel à conta de serviço

Cada uma dessas etapas é descrita nas seções a seguir.

Etapa 1: criar um projeto no console do Google Cloud

O console do Google Cloud é usado para gerenciar e visualizar dados de tráfego, autenticação e informações de faturamento das APIs do Google usadas pelos seus projetos.

No console do Google Cloud, um projeto é um conjunto de configurações, credenciais e metadados sobre o aplicativo em que você está trabalhando e que usa as APIs do Google para desenvolvedores e os recursos do Google Cloud.

O console do Google Cloud também é usado para gerar credenciais de API, ativar APIs e gerenciar informações de faturamento e da equipe associadas ao seu projeto.

Para criar um projeto do console do Google Cloud:

  1. Faça login na sua conta do Gmail ou do Google.

  2. Abra o Console do Google Cloud. Se este for seu primeiro projeto, a visualização principal vai mostrar um botão CRIAR PROJETO:

    fig1

  3. Clique no botão CRIAR PROJETO. O console do Google Cloud mostra a caixa de diálogo Novo projeto:

    fig2

    Digite um nome intuitivo para seu novo projeto no campo de entrada Nome do projeto. Abaixo do campo, o console do Google Cloud gera um ID do projeto para você, garantindo que ele seja exclusivo em todos os projetos. Por exemplo, se você inserir "Meu novo projeto", o console do Google Cloud vai atribuir um ID como my-new-project-266022.

  4. Clique no botão Criar para criar seu novo projeto.

  5. Use o menu de navegação para selecionar APIs e serviços > Painel.

    fig3

    A imagem a seguir mostra o menu de navegação no canto superior esquerdo do console do Google Cloud. Isso mostra a visualização Painel do seu projeto:

    fig4

Para mais informações, consulte Como criar e gerenciar projetos.

Etapa 2: criar uma conta de serviço e gerar as credenciais dela

As contas de serviço são usadas em interações entre servidores, como entre um aplicativo da Web e os dados do seu hotel.

Para criar e configurar uma conta de serviço, faça o seguinte:

  1. Na visualização principal do console de APIs do Google, clique em Credenciais na navegação à esquerda. O console do Google Cloud mostra a visualização Credenciais.

    A visualização Credenciais mostra IDs de cliente e credenciais do seu projeto. O aplicativo usa o ID do cliente ao solicitar um token de acesso do OAuth 2.0. Projetos novos ainda não têm clientes nem credenciais.

  2. Clique no link Credenciais em APIs e serviços.

  3. Clique no botão Criar credenciais e selecione Chave da conta de serviço no filtro. A visualização Criar chave da conta de serviço é exibida.

  4. No filtro Conta de serviço, selecione Nova conta de serviço.

  5. Insira um nome e um ID para a conta de serviço.

    O nome pode ser qualquer um, mas o ID da conta precisa ser exclusivo em todos os projetos. O console do Google Cloud gera um ID de conta exclusivo para você com base no nome inserido.

  6. Selecione JSON como o tipo de chave. O JSON é obrigatório.

  7. Clique no botão Criar. O console do Google Cloud gera um par de chaves privada ou pública para seu projeto. A chave privada é salva no local padrão em que o navegador armazena downloads. Faça o download do arquivo no formato .JSON.

    Você usa a chave privada nos seus scripts ou outros aplicativos que acessam sua API.

    O console do Google Cloud mostra a mensagem "Conta de serviço criada" quando termina de gerar as chaves.

  8. Clique no botão OK, entendi. O console do Google Cloud vai redirecionar você para a visualização Credenciais. Para confirmar os detalhes da sua conta de serviço e ver a conta de serviço associada ao seu projeto, clique em Gerenciar contas de serviço nessa visualização.

    Agora, a conta de serviço tem as seguintes credenciais associadas a ela:

    • ID do cliente:um identificador exclusivo que seu aplicativo usa ao solicitar um token de acesso OAuth 2.0.
    • Endereço de e-mail:um endereço de e-mail gerado para a conta de serviço, no formato "account_name@project_name.google.com.iam.gserviceaccount.com".
    • Impressões digitais do certificado:o ID da chave privada que você baixou.

Para mais informações, consulte Usar o OAuth 2.0 para aplicativos de servidor para servidor.

Etapa 3: conceder à conta de serviço acesso aos dados da Central para Hotéis

A etapa final é dar à nova conta de serviço acesso à sua Central para Hotéis. A conta de serviço é identificada pelo endereço de e-mail gerado que você criou na etapa anterior. Você dá acesso a essa conta usando as configurações de compartilhamento da Central para Hotéis.

Se você não tiver acesso para adicionar usuários à conta, entre em contato com a equipe do Google Hotéis usando o formulário Entre em contato e peça para configurar a propriedade da sua conta. Você pode pedir que um ou mais e-mails sejam enviados a um proprietário. Para mais informações sobre o acesso à Central para Hotéis, consulte Vincular a Central para Hotéis e o Google Ads.

Para conceder a uma conta de serviço acesso aos dados da Central para Hotéis:

  1. Em uma nova janela do navegador, abra a Central para Hotéis. fig7

  2. No banner Hotel Center do Google, clique no ícone de adicionar usuário para abrir a caixa de diálogo de compartilhamento.

    fig8

  3. No campo Adicionar mais pessoas, insira o endereço de e-mail da conta de serviço que você quer adicionar à Central para Hotéis.

  4. Mantenha a opção Notificar as pessoas selecionada.

  5. Selecione Gerenciar no filtro.

  6. Clique no botão Convidar.

  7. Depois de adicionar usuários à Central para Hotéis, sua conta de serviço será ativada para acesso à API em cerca de 24 horas.

Depois que o Google notificar você de que o acesso à API está ativado para sua conta de serviço, comece a acessar a API com o OAuth 2.0.

Como usar o OAuth 2.0

Para acessar a API, seu aplicativo precisa se identificar ao Google com o endereço de e-mail e a chave privada gerados da conta de serviço. O mecanismo de autenticação do Google troca essa chave por um token de acesso OAuth 2.0 que você transmite no cabeçalho Authorization nas chamadas de API do seu app.

Consulte Preparar-se para fazer uma chamada de API delegada.

Escopos

Confira a seguir os SCOPES da API Hotels:

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

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

Especifique a conta de serviço ao criar as credenciais. Consulte Criar uma conta de serviço e gerar as credenciais dela.

Ao desenvolver seu aplicativo, siga as práticas recomendadas para autenticar o aplicativo usando chaves de API. Saiba mais.

Exemplo

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)

API Travel Partner

Com a API Travel Partner, os parceiros de hospedagem podem recuperar informações da Central para Hotéis e mudar os dados dela para gerenciar contas grandes ou complexas.

Siga as instruções de configuração do OAUTH 2.0 para receber autorização para sua API Travel Partner.

Ao criar um projeto para a API Travel Partners, você precisa ativar o acesso ao novo projeto do console do Google Cloud.

Siga as etapas para ativar o acesso à API Travel Partners:

  1. Acesse a visualização do painel do projeto.

  2. Clique em Ativar APIs e serviços. Isso mostra a página de boas-vindas da Biblioteca de APIs.

  3. No campo de pesquisa, comece a digitar "API Travel Partner". O console vai mostrar uma lista de APIs que correspondem ao que você digita.

  4. Clique na API correspondente na tabela. O console do Google Cloud mostra uma descrição sobre essa API.

  5. Clique no botão Ativar API para ativar essa API no seu projeto.

Para mais informações, consulte Como ativar e desativar serviços.

A API Travel Partner agora está ativada para o novo projeto da sua Conta do Google.

O escopo da API Travel Partner é: "https://www.googleapis.com/auth/travelpartner"

O endpoint da API Travel Partner é: "https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"

API Price Feeds

A API Price Feeds permite que os parceiros de hospedagem forneçam dados de preços personalizados para cada hotel. Os parceiros de hospedagem do Google podem usar o OAuth2.0 para se autenticar e autorizar ao fazer upload de preços para o Google. Siga as instruções de configuração do OAUTH 2.0 para receber autorização da API Price Feeds.

Pontos importantes

Observe as diferenças importantes nas instruções de autorização da API Price Feeds.

  1. Os parceiros precisam criar um novo projeto do OAuth 2.0 de feeds de preços no console do Google Cloud usando as mesmas instruções fornecidas na configuração do OAuth 2.0.

  2. A ativação da API Price Feeds no console do Google Cloud NÃO é necessária e pode ser ignorada. Você só precisa de uma conta de serviço e uma chave. Depois, use a mesma conta de serviço e chave para conceder ao projeto de feeds de preços acesso aos dados da Central para Hotéis. Siga as etapas restantes mencionadas na configuração do OAuth 2.0 para concluir a configuração da API.

Receber token de acesso do OAuth 2.0 para feeds de preços

A próxima etapa é receber um token de acesso do OAuth2.0 com o escopo de upload de preços de hospedagem usando o arquivo de chave da conta de serviço. Para autorizar solicitações ao seu projeto de feeds de preços, siga as instruções em Preparar para fazer uma chamada de API delegada e extraia o token de acesso das credenciais adquiridas e defina-o no cabeçalho HTTP "Authorization".

O escopo para upload de preços de hospedagem é: "https://www.googleapis.com/auth/travel-partner-price-upload"

Fazer upload de preços

Depois de receber o token de acesso, os parceiros podem fazer upload do feed de preços de maneira semelhante ao uso de IP estático para autenticação e autorização com a seguinte modificação:

  • Definir o token de acesso no cabeçalho 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>

Testar a configuração do OAuth2.0 para a API Price Feeds

Para testar sua configuração do OAuth 2.0, faça upload de um arquivo vazio ou com dados de preços reais em qualquer um dos caminhos de upload. Use a tabela para verificar o status da resposta HTTP.

Status da resposta HTTP Mensagem
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

Solução de problemas

Está com problemas? Fazer uma verificação rápida dos itens a seguir pode resolver o problema.

  1. Você criou um projeto no console do Google Cloud?
  2. Você ativou o serviço no projeto?
  3. Você fez o download de um arquivo .JSON, uma chave privada, depois de clicar em Criar ID do cliente e selecionar Conta de serviço?
  4. Você recebeu um endereço de e-mail de ID do cliente da conta de serviço no formato: nnnnnnn@app_name.google.com.iam.gserviceaccount.com?
  5. Você compartilhou sua conta do Hotel Ads Center com a conta de serviço clicando no botão Compartilhar esta conta?
  6. Você enviou o endereço de e-mail da conta de serviço e seu ID de parceiro ao gerente técnico de contas (TAM)?
  7. As chamadas de API estão transmitindo um token obtido recentemente no cabeçalho Authorization?
  8. O token tem mais de uma hora?

A tabela a seguir lista alguns erros comuns e possíveis soluções:

Erro Descrição
Invalid credentials Isso pode significar várias coisas. Se você encontrar esse erro, verifique se:
  • Você especificou um cabeçalho Authorization com um token do portador válido.
  • O token de portador tem menos de uma hora. Um token é válido por apenas uma hora.
  • Você especificou o nome correto do parceiro (com o parâmetro de string de consulta partner ). O valor é seu ID de parceiro exclusivo, não o nome do parceiro que aparece na Central de anúncios de hotéis. Se você não souber seu ID de parceiro, entre em contato com o gerente técnico de contas (TAM).
Not found Provavelmente, o endpoint está incorreto. Verifique se você está enviando uma solicitação GET e se o URL da solicitação é válido (está em conformidade com a sintaxe da API que você está tentando acessar).
Invalid string value Uma ou mais partes do endpoint contêm sintaxe inválida. Por exemplo, você pode ter digitado errado parte do caminho. Verifique se você usou os sublinhados, as letras maiúsculas e minúsculas e a redação corretos em todo o caminho.
Unsupported output format Esse erro ocorre com mais frequência ao usar a API Reports. É necessário especificar "alt=csv" no URL da solicitação GET. A API Reports não oferece suporte a JSON.
AccessTokenRefreshError/Invalid grant Ao executar o app, esse erro pode ser causado pelos seguintes motivos:
  • O endereço de e-mail da sua conta de serviço está incorreto. Verifique a conta de e-mail no console do Google Cloud e confira se ela está autorizada a acessar sua API.
  • O endereço de e-mail não tem acesso à API. Verifique se o endereço de e-mail está autorizado a acessar os dados dos hotéis compartilhados pela Central para Hotéis.
  • O arquivo de chave não é o correto para a conta de serviço. Use o console do Google Cloud para baixar um novo certificado .JSON e verifique se o app está apontando para o correto.
HotelAdsAPIConnection object has no attribute credentials Ao executar o app, o caminho para o arquivo .JSON está incorreto.
Invalid scope Ao executar o app, o escopo da API precisa ser um dos seguintes:
  • "https://www.googleapis.com/auth/travelpartner"
  • "https://www.googleapis.com/auth/travel-partner-price-upload"
Forbidden O ID da conta que você usa não tem autorização de acesso. Se você for proprietário de uma subconta, talvez não consiga acessar o ID da conta principal ou raiz.