Para concluir as etapas necessárias para fazer chamadas básicas para a API Street View Publish, siga as etapas neste tutorial.
Como fazer chamadas HTTP
A API Street View Publish pode ser chamada com várias ferramentas, como curl, wget e Postman. Na maioria dos casos, convém usar uma linguagem de programação de sua escolha para criar um aplicativo cliente que use a API, mas este tutorial guiará você pelas noções básicas guiando você pelos comandos individuais.
Também fornecemos algumas bibliotecas de cliente se você não quer fazer chamadas HTTP diretas.
Pré-requisitos
-
Você precisa de uma Conta do Google para acessar o Console de APIs do Google, solicitar uma chave de API e registrar o app.
-
Crie um projeto no Google Developers Console e receba credenciais de autorização para que seu aplicativo possa enviar solicitações de API.
-
Depois de criar o projeto, verifique se a API Street View Publish é um dos serviços que seu aplicativo está registrado para usar:
- Acesse o Console de APIs e selecione o projeto que você acabou de registrar.
- Acesse a página APIs ativadas. Verifique se a API Google Street View está na lista de APIs ativadas. Se não estiver, abra a biblioteca da API e ative a API.
-
Leia o guia de autenticação para saber como implementar a autorização OAuth 2.0.
-
Conheça os principais conceitos do formato de dados JavaScript Object Notation (JSON). JSON é um formato de dados comum e independente de linguagem que fornece uma representação de texto simples de estruturas de dados arbitrárias. Para mais informações, acesse json.org.
Receber uma chave de API
Para fins de autenticação e cota, você precisará usar a API Publish do Google Street View com credenciais geradas no Developers Console.
- Acesse a página Credenciais no Developers Console.
- Se você já tiver uma chave de API, use o valor dela. Caso contrário, crie uma nova selecionando Chave de API no menu Novas credenciais.
Adquirir um token de acesso
- Acesse o Google Developers OAuth 2.0 Playground.
- Clique no menu de configurações (ícone de engrenagem no canto superior direito), marque a opção Use your own OAuth credentials e insira
Client ID
eClient secret
nos campos correspondentes. Em seguida, clique em Close. - Em Etapa 1: selecionar & autorizar APIs, insira o escopo da API
https://www.googleapis.com/auth/streetviewpublish
no campo Insira seus próprios escopos e clique em Autorizar APIs. Uma nova página será aberta para confirmar que você quer autorizar a API. - Clique em Trocar código de autorização dos tokens. O campo Token de acesso será preenchido. Ele conterá seu token de acesso para ser usado na próxima etapa. O token de acesso expira em 60 minutos. Selecione a opção para atualizar automaticamente o token antes que ele expire. Isso cria um novo token.
Enviar uma solicitação HTTP
Depois de ter a chave de API e o token de acesso, é possível executar o seguinte comando
em um shell para realizar uma chamada HTTP para o serviço. No exemplo abaixo, fazemos uma chamada para o método /v1/photo:startUpload
.
$ curl --request POST \ --url 'https://streetviewpublish.googleapis.com/v1/photo:startUpload?key=YOUR_API_KEY' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Length: 0'
Exemplos de solicitação
Depois que você enviar a solicitação HTTP acima, tente usar alguns métodos adicionais. Uma variedade de chamadas é exibida abaixo.
Recebendo uma lista das suas fotos
$ curl --request GET \ --url 'https://streetviewpublish.googleapis.com/v1/photos?key=YOUR_API_KEY' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
Tirar uma foto
$ curl --request GET \ --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
Enviando uma foto
Criar uma foto requer três chamadas separadas. A primeira chamada retorna um URL de upload, que é usado na segunda chamada para fazer o upload dos bytes da foto. Depois do upload dos bytes da foto, a terceira chamada faz o upload dos metadados da foto e retorna o ID da foto.
- Solicitar um URL de upload
$ curl --request POST \ --url 'https://streetviewpublish.googleapis.com/v1/photo:startUpload?key=YOUR_API_KEY' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Length: 0'
- Faça upload dos bytes da foto para o URL de upload
$ curl --request POST \ --url 'UPLOAD_URL' \ --upload-file 'PATH_TO_FILE' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
- Faça upload dos metadados da foto
$ curl --request POST \ --url 'https://streetviewpublish.googleapis.com/v1/photo?key=YOUR_API_KEY' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "uploadReference": { "uploadUrl": "UPLOAD_URL" }, "pose": { "heading": 105.0, "latLngPair": { "latitude": 46.7512623, "longitude": -121.9376983 } }, "captureTime": { "seconds": 1483202694 }, }'
Atualizando uma foto
$ curl --request PUT \ --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY&updateMask=pose.latLngPair' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "pose": { "latLngPair": { "latitude": 46.7512624, "longitude": -121.9376982 } } }'
Atualização em lote de várias fotos
$ curl --request POST \ --url 'https://streetviewpublish.googleapis.com/v1/photos:batchUpdate?key=YOUR_API_KEY' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "updatePhotoRequests": [ { "photo": { "photoId": { "id": "FIRST_PHOTO_ID" }, "pose": { "latLngPair": { "latitude": 37.1701638, "longitude": -122.3624387 } } }, "updateMask": "pose.latLngPair" }, { "photo": { "photoId": { "id": "SECOND_PHOTO_ID" }, "pose": { "latLngPair": { "latitude": 37.1685704, "longitude": -122.3618021 } } }, "updateMask": "pose.latLngPair" } ] }'
Como excluir uma foto
$ curl --request DELETE \ --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
O que é updateMask?
updateMask
é uma forma de manter pequenas solicitações se você quiser atualizar parte
da sua foto, e não toda a imagem. Sem updateMask
, sua solicitação atualizará toda a foto. Isso significa que, se você não definir updateMask
, e a solicitação não tiver pose
, os dados de pose
da foto serão apagados. Alguns valores possíveis
para updateMask
são: places, pose.heading, pose.latlngpair, pose.level,
connections
. É possível colocar vários valores delimitados por vírgulas em updateMask
.