Устранение неполадок с авторизацией URL для плана Premium платформы Google Карт

Управление идентификатором клиента в Google Cloud Console

Функции управления идентификатором клиента (тарифный план Premium), которые находились на портале поддержки, перенесены в Cloud Console. Чтобы получить к ним доступ, откройте страницу "Учетные данные" в разделе Сервисные аккаунты.

Новый раздел идентификатора клиента на странице "Учетные данные"

Примечание. Тарифный план Premium платформы Google Карт больше не доступен для оформления.

Согласно условиям плана Premium платформы Google Карт, идентификаторы клиентов можно использовать только со специально авторизованными URL. Попытка воспользоваться другими URL приводит к ошибке.

Эта статья предназначена для Premium-пользователей платформы Google Карт, у которых возникла проблема с авторизацией нужных URL.

Основные сведения

Чтобы посторонние не могли использовать ваш идентификатор клиента на своих сайтах, его использование ограничено списком URL, которые вы должны авторизовать. Можно авторизовать URL как отдельной страницы, так и целого домена.

Чтобы получить список авторизованных URL или авторизовать дополнительные адреса, перейдите на страницу Учетные данные и прокрутите вниз до раздела Идентификатор клиента.

За один раз можно добавить до 100 URL. Идентификатор клиента может быть связан более чем с 3000 авторизованных URL. Если на Google Картах в вашем приложении будет доступно более 3000 местоположений, мы рекомендуем использовать ключи API вместо URL.

Подробнее об авторизации URL

Проблема

URL приложения не авторизован для вашего идентификатора клиента, и приложение не может использовать платформу Google Карт под этим идентификатором. Когда кто-то пытается работать с приложением, выводится сообщение об ошибке. Конкретное сообщение зависит от загружаемого API. В результате пользователям недоступны функции приложения, для которых требуется Maps JavaScript API.

  • Maps JavaScript API выводит следующее сообщение:

    На этой странице невозможно загрузить Google Карты. Этот сайт не может использовать указанный идентификатор клиента Google Карт. Код ошибки: UnauthorizedURLForClientIdMapError.

  • Если используется Maps JavaScript API 3.18 или более ранней версии, выводится следующее сообщение:

    Google не допускает использования платформы Google Карт для этого приложения. Этому сайту не разрешено использовать идентификатор клиента Карт Google. Если это приложение принадлежит вам, информацию о регистрации URL можете найти в руководстве для разработчиков.

Удаление идентификатора клиента из приложения не решит проблему*, поскольку тогда вы не сможете пользоваться Premium-возможностями платформы Google Карт. В их число входят:

  • Гарантии соглашения об уровне обслуживания.
  • Доступ к поддержке.
  • Увеличенные лимиты использования веб-сервисов.
  • Выгодные коммерческие условия использования сервисов.
  • Поддержка приложений вашего интранета.

Таким образом, если в приложении не настроено корректное использование идентификатора Premium-клиента платформы Google Карт, а само приложение платное или предназначено только для внутренних потребностей вашей компании, то оно не отвечает стандартным Условиям использования платформы Google Карт.

Решение

Определите и авторизуйте нужные URL.

В большинстве случаев для использования идентификатора клиента следует авторизовать приложение. Часто в приложениях используется несколько URL, построенных по единому шаблону. Например, функция поиска филиалов может использовать адрес example.com/stores или stores.example.com. Вам нужно определить URL, который соответствует всем адресам, использующимся в приложении.

Примечание. Если авторизовать URL www.example.com, то субдомены example.com (например, stores.example.com) останутся неавторизованными.

Можно авторизовать URL как отдельной страницы, так и целого домена со всеми субдоменами. Подробнее… Мы рекомендуем авторизовать URL, которые соответствуют широкому спектру адресов, находящихся под вашим контролем.

Примечание. Если ваша организация не контролирует весь контент в домене, то мы не рекомендуем авторизовать этот домен целиком. Так, если авторизовать URL blogspot.com, то вашим идентификатором клиента смогут пользоваться владельцы всех блогов в этом домене, а вы будете за это платить. В такой ситуации лучше авторизовать только ваш блог (например, googlegeodevelopers.blogspot.com) или даже одну конкретную страницу в нём.

Как найти нужный URL

Обычно URL указан в адресной строке браузера. На общедоступных сайтах без тегов <iframe> определить URL легко. А если у вас возникают сомнения, ниже описано, как их разрешить.

В некоторых сложных приложениях для загрузки сервисов платформы Google Карт используется не тот URL, что указывается в адресной строке браузера. Так, это характерно для ресурсов с тегами <iframe> или динамической генерацией URL страниц, загружающих API. В подобных случаях правильные URL можно определить по содержимому HTTP-запросов браузера к серверам Google.

Для этого проверьте запросы, которые браузер отправляет для загрузки API. Авторизовать нужно тот URL, который указан в заголовке Referer. Все API загружаются с разных URL:

В зависимости от настроек приложения запросы к maps.googleapis.com могут направляться или на maps.google.com, или на maps-api-ssl.google.com. Поэтому важно смотреть на путь (выделен полужирным).

Определение по HTTP-заголовкам в браузере

Чтобы проверить заголовок Referer, нужно сначала извлечь необходимые HTTP-запросы. Вот бесплатные инструменты, с помощью которых это можно сделать:

Примечание. Для работы с HTTPS-трафиком требуется программа Fiddler2. Подробнее…

Если у вас нет возможности извлечь HTTP-заголовки из браузера, попробуйте воспользоваться анализатором сетевого трафика – например, Wireshark. Это чуть сложнее, но в интернете много статей и видео о том, как пользоваться Wireshark.

Выбрав инструмент, выполните следующие действия:

  1. Запустите инструмент сбора данных и убедитесь, что он регистрирует HTTP-запросы из браузера.
  2. Откройте в браузере приложение, которому не удается загрузить сервисы платформы Google Карт под вашим идентификатором клиента. Вы увидите одно из приведенных выше сообщений об ошибке.
  3. Остановите запись HTTP-трафика: так вам будет проще проанализировать собранные данные.
  4. Найдите запрос, который пытается загрузить сервис платформы Google Карт под вашим идентификатором клиента. Например, для Maps JavaScript API этот запрос будет выглядеть примерно так:
    GET /maps/api/js?client=gme-yourclientid HTTP/1.1
  5. Заголовки HTTP-запросов идут сразу же после этой строки, без переносов. Найдите заголовок, который выглядит следующим образом:
    Referer: http://www.example.com/stores/find?zip=94043
  6. В найденной строке будет тот самый URL, который вам нужно авторизовать.

Определение через консоль JavaScript в браузере

Если использовать ключ API или идентификатор клиента на неавторизованном сайте, Maps JavaScript API выведет в window.console сообщение об ошибке. Это сообщение и будет содержать нужный вам URL. Ищите в консоли сообщения об ошибках, которые выглядят следующим образом:

Google Maps Platform error: UnauthorizedURLForClientIdMapError ...
Your site URL to be authorized: http://www.example.com/stores/find?zip-94043

Подробнее о том, как посмотреть в браузере сообщения об ошибках

Определение шаблона

Чтобы сервисы платформы Google Карт были доступны во всем приложении, нужно определить общий шаблон, который обеспечит доступ по всем вашим URL, и авторизовать именно этот шаблон. Подробнее…

Часто шаблон легко определить по двум-трем URL. Так, это может быть один каталог (например, example.com/stores) или субдомен (stores.example.com).

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