Esta documentação oferece 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 de feeds de preços. Consulte Como usar o OAuth 2.0 para acessar as APIs do Google para autorizar 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 particular 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 somente leitura, como preços, hotéis e dados de relatórios de diagnóstico sobre o feed de preços do hotel.
Os tokens de acesso são válidos por uma hora (3.600 segundos).
Se você já implementou o login do cliente, a abordagem do OAuth 2.0 é semelhante, com as seguintes diferenças:
- O 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 para usar o OAuth 2.0 com qualquer API Hotels, siga estas etapas:
Cada uma dessas etapas é descrita nas seções a seguir.
Etapa 1: criar um projeto do 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 Developer 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 equipe e de faturamento associadas ao seu projeto.
Para criar um novo projeto do console do Google Cloud:
Faça login na sua Conta do Google ou do Gmail.
Abra o Console do Google Cloud. Se este for seu primeiro projeto, a visualização principal vai mostrar um botão CREATE PROJECT:
Clique no botão CRIAR PROJETO. O console do Google Cloud mostra a caixa de diálogo New Project:
Digite um nome intuitivo para o novo projeto no campo de entrada Nome do projeto. Abaixo do campo, o console do Google Cloud gera um ID de projeto para você, garantindo que ele seja exclusivo em todos os projetos. Por exemplo, se você digitar "My New Project", o console do Google Cloud vai atribuir um ID como
my-new-project-266022
.Clique no botão Criar para criar um novo projeto.
Use o menu de navegação para selecionar APIs e serviços > Painel.
A imagem a seguir mostra o menu de navegação no canto superior esquerdo do console do Google Cloud. A visualização Painel do seu projeto é mostrada:
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 por interações entre servidores, como as que ocorrem entre um aplicativo da Web e os dados do hotel.
Para criar e configurar uma conta de serviço, faça o seguinte:
Na visualização principal do Google API Console, clique em Credenciais na navegação à esquerda. O console do Google Cloud mostra a visualização Credenciais.
A visualização Credenciais mostra os IDs e as credenciais do cliente para seu projeto. O aplicativo usa o ID do cliente ao solicitar um token de acesso OAuth 2.0. Os novos projetos ainda não têm clientes ou credenciais.
Clique no link Credenciais em APIs e serviços.
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.
No filtro Conta de serviço, selecione Nova conta de serviço.
Insira um nome e um ID de conta de serviço.
O nome pode ser qualquer coisa, 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.
Selecione JSON como o tipo de chave. O JSON é obrigatório.
Clique no botão Criar. O console do Google Cloud gera um par de chaves particular ou pública para seu projeto. A chave privada é salva no local padrão em que o navegador armazena downloads. É necessário fazer o download do arquivo no formato
.JSON
.Você usa a chave privada nos scripts ou em outros aplicativos que acessam a API.
O console do Google Cloud mostra a mensagem "Conta de serviço criada" quando termina de gerar as chaves.
Clique no botão OK, entendi. O console do Google Cloud retorna à 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 nesta visualização.
A conta de serviço agora tem as seguintes credenciais associadas:
- 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ê fez o download.
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 é conceder à nova conta de serviço acesso à Central para Hotéis. A conta de serviço é identificada pelo endereço de e-mail gerado que você criou na etapa anterior. Para dar acesso a essa conta, use as configurações de compartilhamento da Central para Hotéis.
Se você não tiver acesso adequado para adicionar usuários à conta, entre em contato com a equipe do Google Hotels usando o formulário de contato e solicite a configuração de propriedade da sua conta. Você pode solicitar 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 acesso aos dados da Central para Hotéis a uma conta de serviço:
Em uma nova janela do navegador, abra a Central para Hotéis.
No banner do Hotel Center do Google, clique no ícone de adição de usuário para abrir a caixa de diálogo de compartilhamento.
No campo Adicionar mais pessoas, digite o endereço de e-mail da conta de serviço que você quer adicionar à Central para Hotéis.
Mantenha a opção Notificar as pessoas selecionada.
Selecione Gerenciar no filtro.
Clique no botão Convidar.
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 que o acesso à API está ativado para sua conta de serviço, você poderá começar a acessar a API com o OAuth 2.0.
Como usar o OAuth 2.0
Para acessar a API, o aplicativo precisa se identificar ao Google com o
endereço de e-mail e a chave privada gerados pela conta de serviço. O mecanismo de autenticação
do Google troca essa chave por um token de acesso OAuth 2.0 que
é transmitido no cabeçalho Authorization
nas chamadas de API do app.
Consulte Preparar-se para fazer uma chamada de API delegada.
Escopos
Confira a seguir o 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
A API Travel Partner permite que os parceiros de hospedagem extraiam informações da Central para Hotéis e mudem 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 novo projeto para a API Travel Partners, é necessário ativar o acesso ao novo projeto do console do Google Cloud.
Siga as etapas para ativar o acesso à API Travel Partners:
Acesse a visualização do painel do projeto.
Clique em Ativar APIs e serviços. A página de boas-vindas da Biblioteca de APIs é exibida.
No campo de pesquisa, comece a digitar "API Travel Partner". O console vai mostrar uma lista de APIs que correspondem ao que você digitou.
Clique na API correspondente na tabela. O console do Google Cloud mostra uma descrição sobre essa API.
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 a autorização da API Price Feeds.
Pontos importantes
Observe as diferenças importantes nas instruções de autorização da API Price Feeds.
Os parceiros precisam criar um novo projeto de feeds de preços OAuth2.0 no console do Google Cloud usando as mesmas instruções fornecidas na configuração do OAuth 2.0.
A ativação da API Price Feeds no console do Google Cloud NOT é necessária e pode ser ignorada. Você só precisa de uma conta e chave de serviço e, em seguida, use a mesma conta e chave de serviço para conceder ao projeto do Feed de preços acesso aos dados da Central para Hotéis. Siga as etapas restantes mencionadas na configuração do OAuth2.0 para concluir a configuração da API.
Receber um token de acesso do OAuth2.0 para feeds de preços
A próxima etapa é receber um token de acesso do OAuth2.0 com o escopo de envio de preço de hospedagem usando o arquivo de chave da conta de serviço. É possível autorizar solicitações para seu projeto de
alimentadores de preços seguindo as instruções em
Como se preparar para fazer uma chamada de API delegada
e extraindo o token de acesso das credenciais adquiridas e definindo-o no
cabeçalho HTTP "Authorization"
.
O escopo para o upload do preço da 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 forma 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 a configuração do OAuth2.0, faça o upload de um arquivo vazio ou com dados de preços reais para 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? Uma verificação rápida dos itens a seguir pode resolver o problema.
- Você criou um projeto no console do Google Cloud?
- Você ativou o serviço no seu projeto?
- 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? - Você recebeu um endereço de e-mail do ID do cliente da conta de serviço no formato:
nnnnnnn@app_name.google.com.iam.gserviceaccount.com
? - Você compartilhou sua conta da Central para Hotéis com a conta de serviço clicando no botão Compartilhar esta conta?
- Você enviou o endereço de e-mail da conta de serviço e o ID do parceiro ao gerente técnico de contas (TAM)?
- Suas chamadas de API estão transmitindo um token recebido recentemente no
cabeçalho
Authorization
? - Seu token tem mais de uma hora?
A tabela a seguir lista alguns erros comuns e possíveis resoluções:
Erro | Descrição |
---|---|
Invalid credentials | Isso pode significar várias coisas. Se você encontrar esse erro,
confira se:
|
Not found | Seu endpoint provavelmente está incorreto. Verifique se você está enviando
uma solicitação GET e se o URL da solicitação é válido (ele precisa estar 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 incorretamente parte do caminho. Verifique se você usou os sublinhados, as letras maiúsculas e a redação corretas em todo o caminho. |
Unsupported output format | Esse erro geralmente ocorre ao usar a API Reports. É necessário especificar "alt=csv" no URL da sua 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:
|
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:
|
Forbidden | O ID da conta que você usa é um que não tem autorização para acessar. Se você for proprietário de uma subconta, talvez não consiga acessar o ID da conta raiz ou principal. |