O portal fornece uma API especial para sincronizar o conteúdo personalizado. Para chamar essa API:
- Sincronize seu conteúdo personalizado manualmente pelo menos uma vez.
- Crie uma conta de serviço com a autorização e a chave apropriadas.
- Faça a solicitação HTTP para sincronizar o conteúdo.
Neste documento, fornecemos instruções para criar uma conta de serviço e exemplos de como fazer a solicitação por meio do Python ou da linha de comando.
Como criar uma conta de serviço autorizada
Para usar uma API para sincronizar o conteúdo personalizado, você precisa de uma conta de serviço com a autorização e a chave apropriadas. Para criar a conta de serviço, conceder a ela o papel adequado e conseguir o arquivo de chave necessário, siga estas instruções:
Console
Crie uma conta de serviço:
No Console do Google Cloud, acesse a página Contas de serviço.
Selecione o projeto em que a API foi configurada para uso.
Clique em
+ Criar conta de serviço.No campo Nome da conta de serviço, insira um nome. O console do Google Cloud preenche o campo ID da conta de serviço com base nesse nome.
Opcional: preencha o campo Descrição da conta de serviço.
Clique em Criar e continuar.
Clique em Concluído para terminar a criação da conta de serviço.
Não feche a janela do navegador. Você vai usá-la na próxima etapa.
Faça o download de uma chave JSON para a conta de serviço que você acabou de criar:
- No console do Google Cloud, clique no endereço de e-mail da conta de serviço que você criou.
- Clique em Chaves.
- Clique em Adicionar chave e em Criar nova chave.
Clique em Criar. O download de um arquivo de chave JSON é feito no seu computador.
Armazene o arquivo de chave com segurança, porque ele pode ser usado para autenticar como sua conta de serviço. Mova e renomeie esse arquivo como quiser.
Clique em Fechar.
No console do Google Cloud, acesse a página Endpoints > Serviços do seu projeto.
Clique no nome da API que receberá a sincronização de conteúdo personalizado para alterar as respectivas permissões de acesso.
Se o painel lateral "Permissões" não estiver aberto, clique em + Permissões.
Para conceder à conta de serviço criada acesso à API, insira o endereço de e-mail dela no campo Adicionar membros.
Na lista suspensa Selecionar um papel, clique em Service Management e selecione Editor de configuração do serviço referente à conta.
Parabéns! Você criou a conta de serviço, fez o download da sua chave privada em um arquivo JSON e atribuiu o devido papel à conta de serviço.
gcloud
Insira o seguinte comando para exibir os IDs dos seus projetos do Google Cloud:
gcloud projects list
Substitua
[YOUR_PROJECT_ID]
no comando a seguir para definir o projeto que contém sua API como padrão:gcloud config set project [YOUR_PROJECT_ID]
Verifique se a Google Cloud CLI (gcloud) está autorizada a acessar seus dados e serviços no Google Cloud:
gcloud auth login
Se você tiver mais de uma conta, escolha a que está no projeto do Google Cloud e que contém a API. Se você executar
gcloud auth list
, a conta selecionada será mostrada como a ativa para o projeto.Para criar uma conta de serviço, execute o comando a seguir e substitua
[SERVICE_ACCOUNT_NAME]
e[Service Account to Sync Custom Content]
pelos nome e nome de exibição que você quer usar:gcloud iam service-accounts create [SERVICE_ACCOUNT_NAME] \ --display-name "[Service Account to Sync Custom Content]"
O comando atribui um endereço de e-mail para a conta de serviço no seguinte formato:
[SERVICE_ACCOUNT_NAME]@[YOUR_PROJECT_ID].iam.gserviceaccount.com
Esse endereço de e-mail é necessário nos comandos subsequentes.
Crie um arquivo de chave da conta de serviço, substituindo
[KEY_FILE]
pelo nome do arquivo da chave:gcloud iam service-accounts keys create ~/[KEY_FILE] \ --iam-account [SERVICE_ACCOUNT_NAME]@[YOUR_PROJECT_ID].iam.gserviceaccount.com
Para conceder à conta de serviço o acesso à API com o conteúdo personalizado, execute o seguinte comando, substituindo
[YOUR_SERVICE_NAME]
pelo nome da API com o conteúdo personalizado:gcloud endpoints services add-iam-policy-binding [SERVICE-NAME] \ --member=serviceAccount:[SERVICE_ACCOUNT_NAME]@[YOUR_PROJECT_ID].iam.gserviceaccount.com \ --role roles/servicemanagement.configEditor
Como enviar uma solicitação para sincronizar o conteúdo personalizado
Nos exemplos a seguir, mostramos como fazer uma solicitação para sincronizar o conteúdo personalizado. A solicitação será semelhante a:
POST https://endpointsportal.[YOUR_PROJECT_ID].cloud.goog/api/v1/[YOUR_SERVICE_NAME]/custom-content/
Substitua [YOUR_PROJECT_ID]
e [YOUR_SERVICE_NAME]
pelos valores apropriados. Quando a solicitação é concluída com sucesso, a resposta inclui o código de status HTTP 200
.
Nos próximos exemplos, mostramos como conseguir um token de acesso dos servidores de autorização do Google e usá-lo para fazer a solicitação ao endpoint do portal por meio do Python ou da linha de comando:
Python
- Instale as bibliotecas necessárias do Python:
pip install --upgrade google-auth
- Para criar um objeto
Credentials
com as credenciais da conta de serviço e os escopos exigidos pelo endpoint e fazer a solicitação de sincronização do conteúdo, substitua[YOUR_PROJECT_ID]
,/path/to/service.json
e[YOUR_SERVICE_NAME]
pelos valores apropriados no seguinte script:from google.oauth2 import service_account from google.auth.transport.requests import AuthorizedSession SCOPES = ["https://www.googleapis.com/auth/service.management.readonly"] SERVICE_ACCOUNT_FILE = "/path/to/service.json" PROJECT_ID = "[YOUR_PROJECT_ID]" SERVICE_NAME = "[YOUR_SERVICE_NAME]" credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES) authed_session = AuthorizedSession(credentials) endpoint = "https://endpointsportal.%s.cloud.goog/api/v1/%s/custom-content" % (PROJECT_ID, SERVICE_NAME) result = authed_session.post(endpoint) print result
Linha de comando
- Abra o Cloud Shell ou uma janela do terminal se você tiver a CLI gcloud instalada no computador Linux.
- Para autenticar-se na conta de serviço, substitua
[KEY_FILE]
abaixo pelo caminho do arquivo da chave da conta de serviço e execute o comando:gcloud auth activate-service-account --key-file [KEY_FILE]
-
Receba um token de autorização usando a conta de serviço:
ACCESS_TOKEN=$(gcloud auth print-access-token)
- Ao chamar a API, passe o valor do token como token do portador em um cabeçalho de autorização. Substitua
[YOUR_PROJECT_ID]
e[YOUR_SERVICE_NAME]
pelos valores apropriados:curl -X POST -H "Authorization: Bearer ${ACCESS_TOKEN}" \ https://endpointsportal.[YOUR_PROJECT_ID].cloud.goog/api/v1/[YOUR_SERVICE_NAME]/custom-content