Устранение проблем Google Maps APIs Premium Plan с помощью авторизации URL-адресов

Идентификаторы клиентов Google Maps APIs Premium Plan ограничены конкретными авторизованными URL-адресами. Если вы попытаетесь использовать свой идентификатор клиента с URL-адресом, который не был авторизован, вы получите сообщение об ошибке.

Наша статья предназначена для пользователей Google Maps APIs Premium Plan, у которых возникла эта проблема и которым нужно узнать точный URL-адрес для авторизации.

Основы

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

Получение списка авторизованных URL-адресов и авторизация дополнительных URL-адресов:

  1. Выполните вход в Google Cloud Support Portal.
  2. В меню с левой стороны страницы нажмите Maps: Manage Client ID.

За один раз можно добавить до 100 URL-адресов, а их общее количество не должно превышать 3 000. Если вам необходим больший лимит адресов, обратитесь в службу поддержки Google Cloud Support.

Дополнительную информацию об авторизации URL-адресов см. в руководстве для разработчиков.

Проблема

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

  • Для Google Maps JavaScript API отображается следующее сообщение:

    This page was unable to display a Google Maps element. This URL is not authorized to use the provided Google Maps Client ID. Error Code: UnauthorizedURLForClientIdMapError

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

    Google has disabled use of the Google Maps APIs for this application. This site is not authorized to use the Google Maps client ID provided. If you are the owner of this application, you can learn more about registering URLs in the developer's guide.

Удаление идентификатора клиента из приложения не помогает решить проблему*. В этом случае вы теряете все преимущества Google Maps APIs Premium Plan для этого приложения. Это означает, что вам окажется недоступным следующее:

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

Это означает, что приложения для внутреннего пользования и платные приложения, в которых надлежащим образом не используется действующий идентификатор клиента Google Maps APIs Premium Plan, не соответствуют Условиям использования бесплатной версии Google Maps APIs.

Решение

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

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

Примечание. Авторизация адреса www.example.com не влечет автоматическую авторизацию адреса stores.example.com и любых других дочерних доменов example.com.

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

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

Определение правильного URL-адреса

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

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

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

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

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

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

Примечание. Для сбора трафика HTTPS требуются специальные настройки Fiddler2. Подробности описаны здесь.

Если вы не можете получить заголовки HTTP непосредственно из браузера, вы можете отслеживать трафик HTTP с помощью анализатора сетевого протокола, например, Wireshark. Этот инструмент более сложный, чем перечисленные выше. Если вы не знакомы с ним, посмотрите обучающие руководства по Wireshark в Интернете.

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

  1. Запустите инструмент сбора данных. Убедитесь, что он фиксирует запросы HTTP из вашего браузера.
  2. Откройте в браузере приложение, которое не может загрузить Google Maps APIs, используя ваш идентификатор клиента. Вы получите одно из описанных выше сообщений об ошибке.
  3. Остановите запись трафика HTTP. Это упростит анализ записанного трафика.
  4. Найдите запрос, который пытается загрузить Google Maps APIs с использованием вашего идентификатора клиента. Например, если ваше приложение пытается загрузить 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 или идентификатор клиента на сайте, который не авторизован, Google Maps JavaScript API записывает сообщения об ошибках в window.console. Правильный URL-адрес можно найти в сообщении об ошибке. В консоли следует искать сообщения об ошибках, которые выглядят следующим образом:

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

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

Поиск общего шаблона

Чтобы убедиться, что все части приложения смогут загружать Google Maps APIs с использованием вашего идентификатора клиента, нужно найти общий шаблон всех URL-адресов, используемых приложением, и авторизовать URL-адрес, представляющий этот шаблон, в соответствии с правилами, которые объясняются в руководстве для разработчиков.

Чаще всего шаблон включает каталог (например, example.com/stores) или дочерний домен (например, stores.example.com), и их легко определить даже из двух URL-адресов.

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