Как настроить Address Validation API

Разработчики из Европейской экономической зоны (ЕЭЗ)

В этом документе описаны шаги, которые необходимо выполнить, чтобы начать использовать Address Validation API.

Требования

В этом разделе рассказывается, как настроить аккаунт Google Cloud и облачный проект с включенными платежными функциями. Вы также должны знать, как взимается плата за использование Address Validation API.

  1. Ознакомьтесь с информацией о ценах и оплате в статье Статистика использования и оплата Address Validation API.
  2. Убедитесь, что у вас есть аккаунт Google Cloud.

    Войдите в консоль Google Cloud.
  3. Убедитесь, что у вас есть проект Google Cloud с включенными платежными функциями.

    Перейти на страницу "Оплата"
    1. Выберите проект, чтобы открыть страницу Billing (Оплата).
    2. На странице Оплата:

      • Если для выбранного проекта уже включена оплата и у вас только один платежный аккаунт, откроется страница Оплата.
      • Если у вас несколько платежных аккаунтов, нажмите Открыть этот аккаунт. Появится страница с информацией о платежном аккаунте, связанном с проектом.
      • Если у вас есть платежный аккаунт, но он не связан с проектом, вам будет предложено связать их.
      • Если у вас нет платежного аккаунта или вы хотите создать новый, выберите Manage Billing Accounts (Управление платежными аккаунтами). Подробнее о том, как создать платежный аккаунт Cloud для самостоятельного использования…

Включение API

Прежде чем использовать Address Validation API, включите его в своем облачном проекте Google Cloud. Это можно сделать в консоли Google Cloud или с помощью команды gcloud.

Чтобы включить API, выполните следующие действия:

Консоль

  1. Откройте страницу продукта в консоли Google Cloud:

    Как включить Address Validation API
  2. Нажмите Включить.

gcloud

gcloud services enable \
    --project "PROJECT" \
    "addressvalidation.googleapis.com"

Прочитайте статьи о Google Cloud SDK, установке Cloud SDK и следующих командах:

Получите ключ API для использования с Address Validation API

Продукты платформы Google Карт защищены от несанкционированного использования, поскольку принимают только те вызовы API, которые содержат ключ API или токен OAuth. Сначала нужно получить ключ API. Если вы хотите использовать токен OAuth, ознакомьтесь с разделом Как создать токен OAuth.

Ключ API – это уникальная буквенно-цифровая строка, которая связывает ваш платежный аккаунт Cloud и облачный проект Google Cloud с запросом, который ваше приложение отправляет в API или SDK платформы Google Карт. Чтобы создать ключ или добавить API или SDK к существующему ключу, следуйте инструкциям ниже.

Консоль

  1. Откройте страницу Google Maps Platform > Keys & Credentials (Платформа Google Карт > Ключи и учетные данные).

    Перейти на страницу "Ключи и учетные данные"

  2. Если появится запрос, выберите проект.
  3. Выполните одно из следующих действий:

    • Создайте ключ.

      1. Нажмите Создать учетные данные > Ключ API.
      2. На панели Create API key (Создать ключ API) откройте список Select API restrictions (Выбрать ограничения API).
      3. Удалите все API, которые не нужны для этого ключа, и убедитесь, что Address Validation API выбран.
      4. Нажмите Создать. На панели появится новый ключ API.
    • Использовать существующий ключ:

      1. Нажмите на название ключа.
      2. В списке Select API restrictions (Выбрать ограничения API) выберите Address Validation API.
      3. Нажмите Сохранить.

    Выбор API не означает его включение. Убедитесь, что Address Validation API включен на странице библиотеки API.

  4. Чтобы посмотреть строку ключа позже, перейдите на страницу Ключи и учетные данные и нажмите Показать ключ.

Если консоль выглядит иначе, чем описано в этих шагах, ознакомьтесь с разделами Создание ключа API и Добавление ограничений API в документации Google Cloud.

gcloud

В следующих командах замените PROJECT_ID идентификатором своего проекта.

  • Создайте новый ключ. Выполните следующую команду, заменив DISPLAY_NAME на название ключа.

    gcloud services api-keys create \
        --project="PROJECT_ID" \
        --display-name="DISPLAY_NAME" \
        --api-target=service=addressvalidation.googleapis.com

    Прочитайте статьи о Google Cloud SDK, установке Cloud SDK и следующих командах:

  • Использовать существующий ключ. Выполните следующую команду, заменив KEY_ID идентификатором ключа. Флаг --append сохраняет API, которые уже разрешены ключом. Если его не указать, команда заменит их.

    gcloud services api-keys update KEY_ID \
        --project="PROJECT_ID" \
        --append \
        --api-target=service=addressvalidation.googleapis.com

    Прочитайте статьи о Google Cloud SDK, установке Cloud SDK и следующих командах:

    Идентификатор ключа – это не строка ключа и не отображаемое название. Чтобы найти его, выполните команду gcloud services api-keys list --project="PROJECT_ID". Идентификатор – это последняя часть поля name: projects/PROJECT_NUMBER/locations/global/keys/KEY_ID.

Чтобы посмотреть строку ключа, выполните команду gcloud services api-keys get-key-string KEY_ID --project="PROJECT_ID".

Как отправить запрос к API

Выполните запрос к Address Validation API, чтобы получить ответ JSON для проверки адреса "1600 Amphitheatre Parkway, Mountain View, CA". Вы должны включать буквенно-цифровую строку ключа API в каждый запрос и использовать HTTPS для запросов, содержащих ключ API.

  1. Нажмите API_KEY в коде ниже, чтобы вставить буквенно-цифровую строку ключа:

    curl -X POST -d '{
      "address": {
        "regionCode": "US",
        "locality": "Mountain View",
        "addressLines": ["1600 Amphitheatre Pkwy"]
      }
    }' \
    -H 'Content-Type: application/json' \
    "https://addressvalidation.googleapis.com/v1:validateAddress?key=API_KEY"
    
  2. Нажмите на значок копирования в примере кода Нажмите на значок копирования., чтобы скопировать команду curl.
  3. Вставьте команду в окно терминала и запустите ее.

Вы получите объект JSON следующего вида:

{
  "result": {
    "verdict": {
      "inputGranularity": "PREMISE",
      "validationGranularity": "PREMISE",
      "geocodeGranularity": "PREMISE",
      "addressComplete": true,
      "hasInferredComponents": true
    },
    "address": {
      "formattedAddress": "1600 Amphitheatre Parkway, Mountain View, CA 94043-1351, USA",
      "postalAddress": {
        "regionCode": "US",
        "languageCode": "en",
        "postalCode": "94043-1351",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1600 Amphitheatre Pkwy"
        ]
      },
      "addressComponents": [
        {
          "componentName": {
            "text": "1600"
          },
          "componentType": "street_number",
          "confirmationLevel": "CONFIRMED"
        },
        {
          "componentName": {
            "text": "Amphitheatre Parkway",
            "languageCode": "en"
          },
          "componentType": "route",
          "confirmationLevel": "CONFIRMED"
        },
        {
          "componentName": {
            "text": "Mountain View",
            "languageCode": "en"
          },
          "componentType": "locality",
          "confirmationLevel": "CONFIRMED"
        },
        {
          "componentName": {
            "text": "USA",
            "languageCode": "en"
          },
          "componentType": "country",
          "confirmationLevel": "CONFIRMED"
        },
        {
          "componentName": {
            "text": "94043"
          },
          "componentType": "postal_code",
          "confirmationLevel": "CONFIRMED",
          "inferred": true
        },
        {
          "componentName": {
            "text": "CA",
            "languageCode": "en"
          },
          "componentType": "administrative_area_level_1",
          "confirmationLevel": "CONFIRMED",
          "inferred": true
        },
        {
          "componentName": {
            "text": "1351"
          },
          "componentType": "postal_code_suffix",
          "confirmationLevel": "CONFIRMED",
          "inferred": true
        }
      ]
    },
    "geocode": {
      "location": {
        "latitude": 37.4225022,
        "longitude": -122.0847398
      },
      "plusCode": {
        "globalCode": "849VCWF8+24"
      },
      "bounds": {
        "low": {
          "latitude": 37.4225022,
          "longitude": -122.0847398
        },
        "high": {
          "latitude": 37.4225022,
          "longitude": -122.0847398
        }
      },
      "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE",
      "placeTypes": [
        "street_address"
      ]
    },
    "metadata": {
      "business": true,
      "residential": false
    },
    "uspsData": {
      "standardizedAddress": {
        "firstAddressLine": "1600 AMPHITHEATRE PKWY",
        "cityStateZipAddressLine": "MOUNTAIN VIEW CA 94043-1351",
        "city": "MOUNTAIN VIEW",
        "state": "CA",
        "zipCode": "94043",
        "zipCodeExtension": "1351"
      },
      "deliveryPointCode": "00",
      "deliveryPointCheckDigit": "0",
      "dpvConfirmation": "Y",
      "dpvFootnote": "AABB",
      "dpvCmra": "N",
      "dpvVacant": "N",
      "dpvNoStat": "Y",
      "carrierRouteIndicator": "D",
      "postOfficeCity": "MOUNTAIN VIEW",
      "postOfficeState": "CA",
      "fipsCountyCode": "085",
      "county": "SANTA CLARA",
      "elotNumber": "0103",
      "elotFlag": "A",
      "addressRecordType": "S",
      "dpvNoStatReasonCode": 5,
      "dpvDrop": "N",
      "dpvThrowback": "N",
      "dpvNonDeliveryDays": "N",
      "dpvNoSecureLocation": "N",
      "dpvPbsa": "N",
      "dpvDoorNotAccessible": "N",
      "dpvEnhancedDeliveryCode": "Y"
    }
  },
  "responseId": "a3d051f9-a802-4d8a-b530-46ee45903453"
}

Как применить ограничения для ключа API

Мы настоятельно рекомендуем ограничивать использование ключей API только теми API и приложениями, которым они необходимы. Ограничение ключей API повышает безопасность вашего приложения, защищая его от нежелательных запросов. Для ключей API поддерживаются два типа ограничений:

  • Ограничения API определяют, какие SDK и API можно вызывать с помощью ключа API. При создании ключа в консоли или gcloud CLI необходимо задать хотя бы одно ограничение API.
  • Ограничения для приложений определяют, какие сайты, IP-адреса или приложения могут использовать ключ API.

Подробнее о том, как ограничить использование ключей API…

Как создать токен OAuth

Address Validation API поддерживает аутентификацию OAuth 2.0. Google поддерживает распространенные сценарии OAuth 2.0, например для веб-сервера.

В этом документе описывается, как передать токен OAuth в вызов Address Validation API в среде разработки. Дополнительную информацию об использовании OAuth в рабочей среде можно найти в статье Способы аутентификации в Google.

Вы можете вызывать Google Maps API напрямую, отправляя запросы к API на сервер, или использовать клиентские библиотеки, чтобы упростить код. Google Карты предоставляют клиентские библиотеки для Go, Java, Node.js и Python. Подробнее о клиентских библиотеках Address Validation API…

Общая информация о протоколе OAuth

Создавать токены доступа и управлять ими с помощью OAuth можно несколькими способами в зависимости от среды развертывания.

Вы можете использовать OAuth 2.0 для межсерверного взаимодействия между вашим приложением и сервисом Google. В этом случае вы используете сервисный аккаунт, связанный с вашим приложением, а не с отдельным пользователем. Вы можете отправлять запросы к API, используя сервисный аккаунт, без непосредственного участия пользователей. Подробнее о способах аутентификации в Google…

Вы также можете интегрировать Address Validation API в мобильное приложение для Android или iOS. Подробнее о том, как использовать OAuth и управлять токенами доступа для разных сред развертывания, рассказывается в статье Использование OAuth 2.0 для доступа к API Google.

Области действия OAuth

Чтобы использовать OAuth с Address Validation API, необходимо назначить токену OAuth следующую область действия:

https://www.googleapis.com/auth/cloud-platform

Пример. Попробуйте вызовы REST API в локальной среде разработки

Если у вас нет среды, которая генерирует токены, и вы хотите попробовать Address Validation API с токеном OAuth, выполните процедуру, описанную в этом разделе.

В этом примере показано, как использовать токен OAuth, предоставленный Application Default Credentials (ADC), для выполнения вызова. Подробнее о том, как выполнить аутентификацию с помощью клиентских библиотек с использованием ADC для вызова API Google…

Приведенную ниже процедуру REST следует использовать только для разработки или тестирования, но не для рабочей среды.

Требования

Прежде чем отправлять REST-запрос с помощью ADC, предоставьте ADC учетные данные, используя CLI gcloud:

  1. Установите и инициализируйте интерфейс командной строки gcloud. Подробнее о том, как установить gcloud CLI…

  2. Выполните аутентификацию с помощью интерфейса командной строки gcloud:

    gcloud auth application-default login
  3. Завершите процесс входа, чтобы сохранить учетные данные в локальном файле учетных данных, используемом ADC.

Подробнее о том, как настроить ADC для локальной среды разработки…

Как выполнить запрос REST

В этом примере вы передаете два заголовка запроса:

  • Передайте токен OAuth в заголовке Authorization, используя следующую команду для создания токена:

    gcloud auth application-default print-access-token

    Возвращенный токен имеет область действия https://www.googleapis.com/auth/cloud-platform.

  • Передайте идентификатор или название проекта Google Cloud, для которого включена оплата, в заголовке X-Goog-User-Project.

Чтобы вызвать Address Validation API с помощью токена OAuth, выполните следующие действия:

  1. В следующем примере кода замените PROJECT_ID на идентификатор проекта Google Cloud:

    curl -X POST -d '{
    "address": {
    "regionCode": "US",
    "locality": "Mountain View",
    "addressLines": ["1600 Amphitheatre Pkwy"]
    }
    }' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://addressvalidation.googleapis.com/v1:validateAddress"
    
  2. Чтобы скопировать команду curl, нажмите Копировать в примере кода.

  3. Вставьте команду в окно терминала и запустите ее.

Вы получите объект JSON:

{
  "result": {
    "verdict": {
      "inputGranularity": "PREMISE",
      "validationGranularity": "PREMISE",
      "geocodeGranularity": "PREMISE",
      "addressComplete": true,
      "hasInferredComponents": true
    },
    "address": {
      "formattedAddress": "1600 Amphitheatre Parkway, Mountain View, CA 94043-1351, USA",
      "postalAddress": {
        "regionCode": "US",
        "languageCode": "en",
        "postalCode": "94043-1351",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1600 Amphitheatre Pkwy"
        ]
      },
      "addressComponents": [
        {
          "componentName": {
            "text": "1600"
          },
          "componentType": "street_number",
          "confirmationLevel": "CONFIRMED"
        },
        {
          "componentName": {
            "text": "Amphitheatre Parkway",
            "languageCode": "en"
          },
          "componentType": "route",
          "confirmationLevel": "CONFIRMED"
        },
        {
          "componentName": {
            "text": "Mountain View",
            "languageCode": "en"
          },
          "componentType": "locality",
          "confirmationLevel": "CONFIRMED"
        },
        {
          "componentName": {
            "text": "USA",
            "languageCode": "en"
          },
          "componentType": "country",
          "confirmationLevel": "CONFIRMED"
        },
        {
          "componentName": {
            "text": "94043"
          },
          "componentType": "postal_code",
          "confirmationLevel": "CONFIRMED",
          "inferred": true
        },
        {
          "componentName": {
            "text": "CA",
            "languageCode": "en"
          },
          "componentType": "administrative_area_level_1",
          "confirmationLevel": "CONFIRMED",
          "inferred": true
        },
        {
          "componentName": {
            "text": "1351"
          },
          "componentType": "postal_code_suffix",
          "confirmationLevel": "CONFIRMED",
          "inferred": true
        }
      ]
    },
    "geocode": {
      "location": {
        "latitude": 37.4225022,
        "longitude": -122.0847398
      },
      "plusCode": {
        "globalCode": "849VCWF8+24"
      },
      "bounds": {
        "low": {
          "latitude": 37.4225022,
          "longitude": -122.0847398
        },
        "high": {
          "latitude": 37.4225022,
          "longitude": -122.0847398
        }
      },
      "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE",
      "placeTypes": [
        "street_address"
      ]
    },
    "metadata": {
      "business": true,
      "residential": false
    },
    "uspsData": {
      "standardizedAddress": {
        "firstAddressLine": "1600 AMPHITHEATRE PKWY",
        "cityStateZipAddressLine": "MOUNTAIN VIEW CA 94043-1351",
        "city": "MOUNTAIN VIEW",
        "state": "CA",
        "zipCode": "94043",
        "zipCodeExtension": "1351"
      },
      "deliveryPointCode": "00",
      "deliveryPointCheckDigit": "0",
      "dpvConfirmation": "Y",
      "dpvFootnote": "AABB",
      "dpvCmra": "N",
      "dpvVacant": "N",
      "dpvNoStat": "Y",
      "carrierRouteIndicator": "D",
      "postOfficeCity": "MOUNTAIN VIEW",
      "postOfficeState": "CA",
      "fipsCountyCode": "085",
      "county": "SANTA CLARA",
      "elotNumber": "0103",
      "elotFlag": "A",
      "addressRecordType": "S",
      "dpvNoStatReasonCode": 5,
      "dpvDrop": "N",
      "dpvThrowback": "N",
      "dpvNonDeliveryDays": "N",
      "dpvNoSecureLocation": "N",
      "dpvPbsa": "N",
      "dpvDoorNotAccessible": "N",
      "dpvEnhancedDeliveryCode": "Y"
    }
  },
  "responseId": "fac2ae1b-50ce-442c-8bc3-d459039950ef"
}

Устранение неполадок

Если в ответ на запрос вы получаете сообщение об ошибке о том, что API не поддерживает учетные данные конечных пользователей, ознакомьтесь с разделом Устранение неполадок с настройкой ADC.

Дальнейшие действия

Теперь, когда вы включили Address Validation API и успешно выполнили запрос, ознакомьтесь с разделами Как отправить запрос на проверку адреса и Как интерпретировать базовый ответ на запрос проверки адреса, чтобы узнать больше об использовании API.