Что такое гугл api
Гид по API Google Maps: разбираем по шагам
Что такое API в Google Maps
Для определения запросов какой-либо компании требуется специальный идентификатор. Это и есть Google API. С его помощью можно использовать интерфейс всем знакомых карт Google, добавлять их в различные приложения, да еще и подстраивать под свой бренд.
Четыре эффективных инструмента позволят быстро и легко настроить карты под свои нужды с использованием APIs.
Как настроить Google Maps
У новичков часто возникают трудности, так как приходится изучать много важной информации. Обезопасить ключ, посмотреть ограничения, подключенные услуги и так далее.
Сначала нужно перейти на страницу cloud.google.com/maps-platform/ и нажать Get started.
Нас перенаправляют на страницу, где нужно выбрать страну и согласиться с условиями:
На следующей странице потребуют создать платежный аккаунт.
Заполнили информацию об аккаунте? Теперь следует внести платежные данные. Когда все готово, останется кликнуть «Начать бесплатный пробный период».
Если появится фраза «включить платформу Google Maps», это значит, что все сделали правильно. Чтобы активировать API Key, нужно нажать Next. В конце Google покажет сам ключ, а закрыть окошко можно с помощью кнопки Done.
Как настроить ключ
Создание ключа – это лишь начало. Теперь его нужно правильно настроить. Он не должен попасть в чужие руки, да и за бюджетом следить не помешает.
Начать следует с ссылки «Учетные данные», которая находится в левом меню. Здесь находится сам ключ. Настроить его можно, нажав на значок карандаша. Имя можно поменять на название проекта. Например, многие пишут имя сайта. Лимиты и границы настраивают в разделе «Ограничения ключа». Здесь всего две вкладки: первая для приложений, вторая для API. В этих вкладках нужно настроить службы и веб-сайты. Чтобы изменения вступили в силу, настройки следует сохранить.
Здесь же обязательно следует включить кредит от Google. Эта кнопка находится в самом низу поля редактирования бюджета. Именно эта возможность позволяет использовать сервис бесплатно.
Можно установить не только общие ограничения, но и отдельные.
В чем польза для разработчиков
С помощью Google Maps API можно успешно развивать backend-направления и оптимизировать запросы.
API для программно-административной части
Сами карты для таких целей используют редко. Зато API отлично подходит, чтобы узнать расстояние между точками и обрабатывать GPS-запросы.
Чтобы напрямую обращаться к серверам Google, используют службу Geocoding. Она работает с HTTP-запросами.
Хотя для обработки данных можно применять и другие инструменты. Бесплатно работать с серверной частью помогают:
Про них мы поговорим чуть позже, когда будем рассказывать об альтернативных сервисах.
Для эффективной оптимизации используют два варианта:
Как на этом сэкономить
У каждой организации могут быть индивидуальные способы экономии денег на API. Но все же существуют обобщенные варианты, которые подходят практически всем.
Альтернативные сервисы
Когда по каким-то причинам Google не подходит, используют другие сервисы. У них тоже достаточно приличная коллекция инструментов и служб, а по деньгам иногда выходит значительно дешевле.
Пожалуй, это главный конкурент Google. Отлично подойдет российским организациям и разработчикам, которым не требуется детальная прорисовка зарубежных объектов. И здесь тоже присутствует четыре службы:
Их можно использовать абсолютно бесплатно. Конечно, если соблюдать некоторые правила :
Если сравнить цены у Яндекса и Google, у первого услуги выходят дешевле.
Еще одним важным преимуществом является то, что сервис предлагает электронные и бумажные отчеты для бухгалтерии.
Здесь встречаются тарифные планы, которые действуют специально для тех, кто переходит к ним с Google.
Преимущество в том, что не нужно привязывать банковскую карту для изучения всех возможностей сервиса.
Бесплатный тарифный план называется Freemium. Он предлагает 250 000 запросов в месяц. Если лимит превысить, то за каждую 1000 придется платить по одному доллару.
По статическим изображениям API здесь количество месячных запросов – 50 000 штук. Дополнительная оплата за 1000 запросов сверх лимита составляет 1 доллар.
Здесь тоже можно подстроить интерфейс под себя, а также создавать визуальные 2D- и 3D-модели карт. Геокодинг, навигация и многие другие функции тоже доступны.
Расширенный функционал предлагает еще больше возможностей. Среди них спутниковые данные, преобразование для среды Unity и других игровых платформ, визуализация в Power BI.
Среди знаменитых почитателей этого сервиса можно выделить Facebook и Twitter.
Этот поставщик онлайн-карт использует собственную библиотеку MapBox.js, а информацию он берет с разных источников. Сюда входит NASA и OpenStreetMap.
Этот сервис подойдет тем, кому не нужен слишком богатый функционал, но и платить деньги не хочется. Люди с разных уголков планеты вносят свой вклад в развитие проекта, так как исходный код открытый.
Но здесь следует учитывать некоторые особенности работы:
Возможностей здесь мало, зато и деньги платить не нужно.
Остальные сервисы тоже пользуются спросом и имеют свои преимущества. Это:
Заключение
Многим организациям полезно использовать карты Google. Но и разработчики откроют для себя в этом мощном инструменте массу возможностей. Давайте еще раз повторим основные моменты, о которых мы говорили в этой статье:
Первый опыт работы с Google API (на примере ContactsAPI) и OAuth2.0 на чистом HTTP
Первая часть. Создание приложения и настройка
Итак, конкретно для моих целей нужно было использовать Contacts API. Заходим в свой google аккаунт в котором хотим включить API. Переходим по ссылке
console.developers.google.com/iam-admin/projects и нажимаем «Создать проект»:
Дальше делаем все то, что предлагает Google, никуда не сворачивая. Задаем имя проекту и т.д.
После того, как создание проекта будет завершено, вы сможете скачать файл со всеми данными проекта (ID, секрет и т.п.).
Также необходимо включить API. Для этого переходим на console.developers.google.com/apis/, выбираем из списка необходимый API и в открывшейся вкладке нажимаем «Включить API». Все, на этом первый шаг закончен.
Вторая часть. Получение токенов
Для обращения к API необходимо получить токены доступа по стандарту OAuth 2.0. Это, пожалуй, было для меня сложнее всего. Разобраться как, куда и какие запросы посылать, в каком порядке — не так уж и просто.
Для получения токенов, которые я бы смог в дальнейшем использовать в своей программе, я использовал расширение для Firefox, которое называется HTTPRequester.
1. Получить code
На этом шаге производится запрос пользователю на получение доступа. Пример запроса (символом * просто заменены некоторые данные моего приложения):
Подробнее о некоторых параметрах:
scope — сервис, к которому мы получаем доступ. Для контактов это www.google.com/m8/feeds. Список адресов разных сервисов находится по ссылке developers.google.com/identity/protocols/googlescopes;
access_type — тип доступа. Если вам нужно будет обновлять токены без участия пользователя, обязательно используйте значение offline. Также возможно значение online, но при его выборе необходимо будет каждый раз запрашивать разрешение у пользователя в браузере;
redirect_uri и client_id — данные, которые указаны в файле проекта, который был скачан на первом этапе;
При выполнении этого GET запроса появится страница разрешений:
Если нажать «Разрешить», вы получите code, выглядит примерно так (* — замена моих данных):
4/iLcXnhpU8NvMHT5aTy8JjXhcROERzkvKq********
2. Получить токены
Для получения токенов авторизованного доступа необходимо послать POST запрос на адрес
www.googleapis.com/oauth2/v4/token (Обязательно, content-type запроса должен быть application/x-www-form-urlencoded).
В теле запроса должны быть следующие параметры:
Где
code — данные, полученные на предыдущем шаге;
grant_type — обязательный параметр, который должен быть равен «authorization_code» (не какой-либо код авторизации, а именно так, буквами — authorization_code).
Ответ вы получите в формате JSON, в котором будут указаны токен досупа и токен обновления токена доступа.
3. Обновить токен доступа
Токен доступа (access_token) действует ограниченное время, указанное в параметре expires_in. После истечения срока действия токен доступа можно обновить по токену обновления (refresh_token).
Для этого необходимо сделать POST запрос на www.googleapis.com/oauth2/v4/token (Обязательно, content-type запроса должен быть application/x-www-form-urlencoded).
Тело запроса:
В ответе, опять же в формате JSON вы получите новый токен доступа.
Все, полученные данные можно использовать для выполнения ваших задач. Все, что было написано выше — авторизация приложения по протоколу OAuth 2.0. Далее, для выполнения авторизованных запросов необходимо передать в параметрах токен доступа (http://google. com/?access_token=ya.23*****************).
Работа с Contacts API
Для моей задачи мне нужно было всего три действия: Добавить контакт, получить список контактов и удалить контакт.
1. Получение списка контактов
Для получения списка контактов достаточно отправить GET запрос с параметрами. Пример запроса:
www.google.com/m8/feeds/contacts/gmm********@gmail.com/full?access_token=ya29.GlwbBFzl0uXJG6yt_Wdgr6vI4KJ88Djw85H******************************************************.
В ответе вы можете распарсить данные и получить число контактов, их описание и их ID.
gmm**********@gmail.com — адрес моей учетной записи.
2. Добавление контактов
Для добавления контактов в адресную книгу надо отправить POST запрос с токеном доступа в параметрах. (Обязательно, content-type запроса должен быть application/atom+xml). Пример запроса:
Всю структуру оставляем такую же, меняем только персональные данные (имя, номер и т.д.).
3. Удаление контакта
Для удаления контакта надо узнать его ID (его можно получить или в ответе при добавлении контакта или при получении всего списка контактов) и отправить DELETE запрос.
ВАЖНО! В header запроса обязательно надо добавить параметр If-Match и задать его значение как *. Без этого удалить контакт не получится.
www.google.com/m8/feeds/contacts/gmm***@gmail.com/base/5a5415d78e677387?access_token=ya29.GlwYBLz6AgOE9Xsnt8Z1raYaa3fB*********************
5a5415d78e677387 — ID контакта.
Оригиналы документации google:
На этом все, я буду очень рад, если кому-нибудь пригодится статья. Лично мне, человеку, который впервые столкнулся с google API, было довольно трудно со всем этим разобраться.
Как получить ключ Google API (для YouTube API, Google Sheets API и т.д.)
Для того чтобы пользоваться сервисами Google API (YouTube API, Google Sheets API, Google Docs, Drive и т.д.), с использованием любого языка программирования, необходимо:
В некоторых случаях нужно пройти модерацию проекта в Google Cloud Platform чтобы нормально работать. При этом Google любит менять как правила, так и интерфейс. Инструкции написанные в прошлом году могут не работать совсем или местами. Как в этом всем разобраться?
Я в своем сериале про работу с YouTube API уже делал два видео (1, 2) о создании проекта в Google Cloud Platform и получении ключей. Но понял что уже пора их дополнить, и более внятно систематизировать в виде отдельной статьи и отдельного видео, что я и делаю ниже.
Примеры использования Google API на практике смотрите в плейлисте, а сегодня чисто интерфейс Google Cloud Console.
Скорее всего со временем что-то в ней устареет, но текст проще править и/или дополнять, чем видео. Кроме того тут главное «воткнуться» в идеологию Google Cloud Platform и тогда все изменения будут восприниматься легче. Поскакали!
Видео версия — все то что в тексте ниже и немного больше
Создание проекта в Google Cloud Platform
Сначала вам нужен обычный аккаунт в Google. Иногда полезно завести отдельный аккаунт Google специально для приложения. Залогинься под этим аккаунтом в браузере и перейди в Google Cloud Platform по ссылке https://console.cloud.google.com/.
Регистрация в Google Cloud Platform
Если ты в свежем аккаунте и раньше Google Cloud Platform в этом аккаунте не пользовался, то сначала придется придется пройти регистрацию. Это не больно и нужно сделать один раз.
Это кадр из первого видео про создание приложения в Google API.
Создание Проекта в Google Cloud Platform
Затем нужно создать Проект в Google Cloud Console. Название произвольное (без кириллицы), но лучше внятное, чтобы ты потом, через полгода, вспомнить где этот проект может быть используется. Ведь в одном аккаунте может быть до 10 проектов и иногда проекты приходится удалять. Бывает сидишь и думаешь можешь ты удалить этот проект или он где то используется, поэтому удалять нельзя ( хозяйке на заметку — просмотр квот может помочь в этом диком случае ).
Создание OAuth consent screen
Это важнейшая, по мнению Google, часть проекта. Она описывает что будет делать приложение и как работать с пользовательскими данными. Здесь же вы должны подготовить Описание приложения, которое будет показываться пользователям если приложение будет запрашивать у него какие либо разрешения (доступ к его гугл диску или к его комментариям на ютюбе).
User Type
Первое что заполняем — это ограничение пользователей приложения. Если вы делаете Проект для ограниченного круга пользователей аккаунты Google которых объедены в Google Cloud Organization (Google Workspaces), то выбираете Internal. Но в большинстве случаев наш выбор External. Зачем делать этот выбор?
Internal проекты не нужно отправлять на модерацию в Google. Проект полноценно работает для всех пользователей вашей организации. Это удобно, например, когда вы делаете что-то вроде CRM с использованием Google Docs, Google Sheets, Google Drive. Пришел новый сотрудник, админ закинул его в Google Workspaces и он полноценный пользователь вашего приложения. Чтобы выбрать этот пункт нужно чтобы у вас уже была организация в Google Cloud. Иначе этот пункт будет не доступен для выбора.
External проекты могут быть доступны неограниченному кругу пользователей. Не нужно никаких Google Cloud Organization, ваше приложение просто спрашивает у юзера разрешение на изменение его Google Sheets и этого достаточно. А пользователь может, при необходимости, отозвать разрешение у вашего приложения когда сочтет нужным. Однако чтобы Проект так работал его нужно отправить на модерацию в Google, и не факт что проект эту модерацию пройдет. А в режиме теста некоторые функции Проекту могут быть вообще не доступны (например загрузка видео в паблик на YouTube через YouTube API). И круг пользователей ограничен сотней Google аккаунтов, которые ещё и нужно добавлять в проект вручную и невозможно удалить.
Иногда можно делать приложение, а для полноценного его использования просить юзера создать Проект в его Google Cloud Platform и подгрузить в проект ключи. Но это, сами понимаете, доступно не каждому пользователю.
Регистрация проекта в Google Cloud Platform
То что вы укажете в этом окне будет видно пользователям приложения во время запроса разрешений. Если вы планируете делать приложение публичным (в том числе отправлять его на модерацию) я бы порекомендовал внимательно отнестись к его заполнению. Я же обычно из тестового режима приложения не вывожу и заполняю эти поля как придется — на работу в тестовом режиме все это не влияет (ну кроме домена в некоторых случаях).
Scopes Проекта — должны быть минимальными чтобы не просить у пользователя слишком много и не отпугивать. Также слишком много запросов на разрешения могут усложнить прохождение модерации. Для приложения в тесте я здесь не заполняю вообще ничего, а разрешения запрашиваю уже из кода на Python, PHP или C#.
Тестовые пользователи проекта. У приложения в режиме теста есть ограничения по ряду методов в ряде API Google Cloud. Некоторые из них доступны только тем Google Account что добавлены в Test Users.
Важно! Единожды добавив тестового юзера в список его уже нельзя удалить.
После заполнения OAuth consent screen наступает самый важный момент — создание ключей.
Создание Credentials
Это крайне важный момент правильной настройки приложения Google Cloud Platform. Я сам долгое время не понимал принципов, поэтому настоятельно рекомендую разобраться, в том числе почитать официальную документацию.
Для того чтобы наше приложение могло обращаться к API Google Cloud нужно идентифицировать приложение и создать в коде сущность от имени которой приложение будет взаимодействовать с API Google Cloud. Для этого в окне Credentials нужно создать как минимум 1 идентификатор (ключ, токен) которое затем нужно использовать в вашем коде. В окне Credentials вы видите 3 типа идентификаторов API Keys, OAuth 2.0 Client IDs и Service Accounts. Для разных методов разных API могут быть нужны разные идентификаторы, в некоторых случаях достаточно простого API Key (который может быть вечным), а случаях когда приложение использует пользовательские данные или работает от имени пользователя нужно использовать OAuth 2.0 Client ID и запрашивать у пользователя разрешения.
Давайте проще на конкретных примерах:
Ключей можно создать много, их можно отзывать, к ним можно применять многочисленные ограничения доступа. Это гибкий и функциональный инструмент.
Как создать API Key
Жмем кнопку + CREATE CREDENTIALS, затем выбираем API Key, появляется окно с ключом. Ключ создан и им можно пользоваться. Созданный ключ можно удалить или отредактировать для ограничения доступа по ряду условий (доступ по IP, доступ по приложениями, доступ к конкретным API Google Cloud). Ключ вечный, обновлять его не нужно.
Если нажать на REGENERATE KEY, то токен (значение ключа, набор символов) изменится и все приложения которые использовали этот ключ работать перестанут.
Как создать Service Account
Жмем кнопку + CREATE CREDENTIALS, затем выбираем Service Account, появляется окно где обязательно нужно заполнить только два поля:
Для работы с сервисным аккаунтом обычно достаточно знать его емейл. Например для выдачи нашему приложению разрешения редактировать Google Sheet нужно просто расшарить таблицу на емейл сервисного аккаунта.
Пример использования сервисного аккаунта
У сервисного аккаунта значительно больше настроек чем у API Key. Самый важный раздел PERMISSIONS, но это тема для отдельного и большого разговора.
Как создать OAuth 2.0 Client ID
OAuth 2.0 Client ID предоставляет наибольшее количество возможностей, однако и более сложен в обращении на всех этапах от создания, до использования в приложениях. Именно с этим ключом приложение может делать в пользовательском аккаунте почти все:
При условии что приложение запросило разрешение у пользователя и пользователь это разрешение выдал.
В некоторых случаях Google накладывает дополнительные ограничения на действия приложения в режиме теста, не прошедшее модерацию.
Какие ключи выбрать то в итоге для приложения
Все просто! Если ваше приложение только лишь читает общедоступные данные не связанные с личными данными пользователей, то, скорее всего, вашему приложению будет достаточно API Key. Тогда используйте именно его и создавайте ключи под разные задачи. В остальных ситуациях предпочтителен сервисный аккаунт и только если его не хватает методу (а это может быть явно указано в документации к методу) используйте Create OAuth client ID.
Подключение нужных API
Ну и финальный аккорд — это подключение к приложению в Google Cloud Console нужных нам API. Принципиально вы можете создавать под каждое API свое приложение, а можете в одно приложение подключить почти все API и пользоваться одними токенами под все задачи. Как вам удобнее так и делайте. Но я предпочитаю разделять.
Подключить API просто идем в раздел Library и добавляем нужное API.
Про квоты
У каждого проекта в Google Cloud Console на каждое API если определенные лимиты, называемые квоты. Когда приложение использует методы API, отправляя запрос эти квоты (points) расходуются. Расходуются они даже если запрос был не успешным. Квоты выдаются на проект, и в каждом аккаунте Google Cloud Console может быть до 10 проектов.
Тут есть прием, незатейливая хитрость, которая позволяет вам увеличить вам квоты попробуйте догадаться как и напишите в комментариях.
Квоты можно посмотреть на Dashboard проекта и в разных местах Google Console — просто наберите в поиске консоли quotas.
У каждого API есть свои «тарифы», например Калькулятор квот для YouTube Data API. Перед разработкой стоит посмотреть какие методы сколько квот потребляют, как оптимизировать приложение с этой точки зрения и как отлавливать превышение лимита квот. Особая боль в том что ни в каком из API нет методов для проверки остатков квот, а Google в свою очередь может забанить приложение которое будет долбиться с превышением.
Сериал по работе с Google API
Google Maps API
Картографический сервис – зачем это? Ну например, я 10 лет жил в нашей маленькой провинции, а потом взял и понаехал в Москву, и всё для меня так ново. А где магазины, боулинг, кафешки, парки отдыха – надо знать же, где тратить московскую зарплату. Но вот беда, как узнать? Раньше был справочник «Желтые страницы» и там была карта и всё по адресам. Чтобы найти что-то уходило масса времени. Сейчас стало всё в разы проще. Вот прекрасный пример: http://www.pushkino.org/. Но это далеко не всё.
Я могу отслеживать погоду, пожары, пробки (кстати!) в реальном времени.
Мой заказчик может не вводить свой адрес, а попросту отметить его на карте и я буду знать куда доставить ему товар – какое классное решение, не надо всего этого – «Проспект маршала Блюхера, 43, г. Санкт-Петербург, Россия».
Задача для примера
Как делать?
Ключ API
Ключ API нужен для использования работы с картой, т.е. при запросе всех их скриптов и сервисов в параметры нужно добавлять &key=[тут наш ключ]. Впрочем для http://localhost он не нужен. Получить его надо тут: http://code.google.com/apis/maps/signup.html. Кстати, работает и без него на сайте, но может это временно.
Для v.3 не нужен
Map\Marker\InfoWindow
Для работы нам понадобится 3 основных объекта. Первое – это карта.
Карта создается очень просто. У нас есть какой-то определенный контейнер:
center: myLatlng – это координаты центра карты
zoom – это увеличение при инициализации
mapTypeId – тип (политическая, физическая, гибрид)
Карта готова!
Второе — это метки:
position – собственно координаты метки
map – на какую карту метку поместить
title – при наведении мыши будет писать “Hello World!”.
InfoWindow
content – содержимое в метке
— при клике на метку, показать окно с информацией, на карте map с привязкой к marker.
Geocoding
И в ответе приходит:
Вся прелесть в том, что можно в address параметре передавать значение на любом языке(Ivanovo, Іваново, ), еще лучше, что для Санкт-Петербурга прокатывает «Спб» и «Питер». Правда есть и недочеты: мой родной город Ивано-Франковск упорно называет Ивано-Франковськ, на украинский манер.
Вторая возможность, это по координатам узнать адрес:
А теперь о не очень хорошем. Geocoder – насколько клевая функция, что пользоваться ею можно только 2500 запросов в день. Google предлагает Google API Key Premier от 10000$ в год, и тогда ограничение будет в 100 тыс. запросов в день, причем куча всяких «клевых» дополнений, но я их не могу себе позволить.
Markercluster
Когда слишком много маркеров — это выглядит конечно ужасно. Поэтому хорошо бы делать кластеризацию всех этих маркеров. Тут на Хабре я видел уже обсуждение по этому поводу: http://habrahabr.ru/blogs/google/28621/
В общем, есть отличный инструмент (а тут их целый набор http://code.google.com/apis/maps/articles/toomanymarkers.html) который помогает сделать так, чтобы толпы маркеров не пугали нас.
До:
После:
Это именно то что нам надо.
Эту библиотеку можно скачать тут: http://google-maps-utility-library-v3.googlecode.com/svn/trunk/
Как использовать.
Добавляем библиотеку
Составляем массив маркеров, не добавляя в карту:
maxZoom – максимальный зум при котором мы еще группируем маркеры, дальше – уже нет.
gridSize – размер ячеек сетки, чем меньше значение, тем меньше сетка группировки
styles – дополнительные стили