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

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

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

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

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

Предварительные условия

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

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

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

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

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

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

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

  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 .