Сделайте свои первые вызовы API

Чтобы выполнить действия, необходимые для базовых вызовов API публикации Просмотра улиц, выполните действия, описанные в этом руководстве.

Выполнение HTTP-вызовов

API публикации Просмотра улиц можно вызывать с помощью нескольких инструментов, таких как curl, wget и Postman . В большинстве случаев вы захотите использовать язык программирования по вашему выбору для создания клиентского приложения, использующего API, но это руководство проведет вас по основам, проведя вас через отдельные команды.

Мы также предоставляем некоторые клиентские библиотеки , если вы не хотите выполнять прямые вызовы HTTP.

Предпосылки

  1. Вам нужна учетная запись Google , чтобы получить доступ к консоли Google API, запросить ключ API и зарегистрировать свое приложение.

  2. Создайте проект в Google Developers Console и получите учетные данные авторизации, чтобы ваше приложение могло отправлять запросы API.

  3. После создания проекта убедитесь, что API публикации Просмотра улиц является одной из служб, для использования которых зарегистрировано ваше приложение:

    1. Перейдите в Консоль API и выберите проект, который вы только что зарегистрировали.
    2. Посетите страницу «Включенные API» . Убедитесь, что Google Street View API находится в списке включенных API. Если это не так, откройте библиотеку API и включите API.
  4. Прочтите руководство по аутентификации , чтобы узнать, как реализовать авторизацию OAuth 2.0.

  5. Ознакомьтесь с основными понятиями формата данных JavaScript Object Notation (JSON). JSON — это распространенный независимый от языка формат данных, обеспечивающий простое текстовое представление произвольных структур данных. Для получения дополнительной информации см. json.org .

Получить ключ API

Для целей аутентификации и квот вам потребуется использовать Google Street View Publish API с учетными данными, сгенерированными в консоли разработчика.

  1. Перейдите на страницу учетных данных в консоли разработчика.
  2. Если у вас уже есть ключ API, вы можете использовать значение из него. В противном случае создайте новый, выбрав ключ API в меню « Новые учетные данные ».

Получить токен доступа

  1. Перейдите на игровую площадку Google Developers OAuth 2.0 .
  2. Щелкните меню настроек (значок шестеренки в правом верхнем углу), установите флажок Использовать собственные учетные данные OAuth и введите свой Client ID Client secret в соответствующие поля, а затем нажмите Закрыть .
  3. В разделе « Шаг 1. Выбор и авторизация API » введите область действия API https://www.googleapis.com/auth/streetviewpublish в поле « Введите собственные области действия», затем нажмите « Авторизовать API » . Откроется новая страница для подтверждения того, что вы хотите авторизовать API.
  4. Щелкните Код авторизации Exchange для токенов . Это заполнит поле Токен доступа , которое будет содержать ваш токен доступа, который будет использоваться на следующем шаге. Срок действия токена доступа истекает через 60 минут. Вы можете выбрать опцию автоматического обновления токена до истечения срока его действия, что создаст новый токен.

Отправить HTTP-запрос

Получив ключ API и токен доступа, вы можете запустить следующую команду в оболочке, чтобы выполнить HTTP-вызов службы. В приведенном ниже примере мы вызываем метод /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'
  

Примеры запросов

После того, как вы освоитесь с отправкой HTTP-запроса, приведенного выше, попробуйте использовать некоторые дополнительные методы. Ниже показаны различные вызовы.

Получение списка ваших фотографий

    $ curl --request GET \
    --url 'https://streetviewpublish.googleapis.com/v1/photos?key=YOUR_API_KEY' \
    --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
  

Получение фото

    $ curl --request GET \
    --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \
    --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
  

Загрузка фото

Создание фотографии требует трех отдельных вызовов. Первый вызов вернет URL-адрес загрузки, который используется во втором вызове для загрузки байтов фотографии. После загрузки байтов фотографии третий вызов загружает метаданные фотографии и возвращает идентификатор фотографии.

  1. Запрос URL-адреса загрузки
            $ 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'
          
  2. Загрузите байты фотографий на URL-адрес загрузки
            $ curl --request POST \
            --url 'UPLOAD_URL' \
            --upload-file 'PATH_TO_FILE' \
            --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
          
    .
  3. Загрузите метаданные фотографии
            $ 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
                      },
                    }'
          

Обновление фотографии

   $ 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
                 }
               }
             }'
  

Пакетное обновление нескольких фотографий

   $ 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"
                  }
              ]
          }'
  

Удаление фотографии

    $ curl --request DELETE \
    --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \
    --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
  

Что такое маска обновления?

updateMask — это способ сделать ваши запросы небольшими, если вы хотите обновить часть своей фотографии, а не всю ее. Без updateMask ваш запрос обновляет всю фотографию. Это означает, что если вы не установите updateMask и в вашем запросе отсутствует pose , pose вашей фотографии будет очищена. Вот некоторые возможные значения для updateMask : places, pose.heading, pose.latlngpair, pose.level, connections . Вы можете поместить несколько значений, разделенных запятыми, в updateMask .