Устранение проблем с помощью авторизации для реализаций Google Maps APIs for Work

Эта страница предназначена только для пользователей, которые владеют лицензией на ранее выпускавшиеся продукты Maps APIs for Work или Maps API for Business. Эта страница не предназначена для пользователей нового продукта Google Maps APIs Premium Plan, который стал доступен в январе 2016 года.

Группа Google Cloud Support
декабрь 2011 г.

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

Наша статья предназначена для пользователей Google Maps APIs for Work, у которых возникла эта проблема и которым нужно узнать точный 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 отображается следующее сообщение:

    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 Maps API 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 Static Maps API и Google Street View Image API сообщения об ошибках не отображаются. Однако в отношении запросов этих API, использующих идентификатор клиента с неавторизованного URL-адреса, не действуют условия соглашения об уровне обслуживания Google Maps APIs for Work, и вы не имеете права пользоваться технической поддержкой.

В результате пользователи не смогут использовать функции, зависящие от Google Maps JavaScript API.

При удалении идентификатора клиента из приложения проблема исчезает, однако вы теряете все преимущества Google Maps APIs for Work в отношении этого приложения. Это означает, что вам окажется недоступным следующее:

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

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

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

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

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

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