Интеграция с Google Docs может использоваться в боте для обмена данными с внешними системами для загрузки справочной информации или выгрузки результатов работы. Наиболее актуальным приложением Google Docs при реализации бота является интеграция с Google Sheets. Поэтом дальнейшая документация и пример интеграции в Sherlock Platform реализуют обмен именно с Google Sheets.
Далее описан процесс подключения к Sherlock Platform интеграции с Google Sheets.
Шаг 1. Создание проекта Google для работы с API
Первоначально, для работы с api google, необходимо создать проект в console.developers.google.com (рис. 1).
Рисунок 1. Создание проекта Google
Для проекта нужно ввести имя (произвольное) и перейти в созданный проект. Затем необходимо подключить нужные api (в нашем примере - Google Sheets). Для этого необходимо перейти в Библиотеку и найти нужное api:
Далее перейти в найденный api и нажать Включить (Enable). После включения api необходимо создать учетные данные:
Далее необходимо ввести требуемую информацию: выбрать api из списка, выбрать источник вызова api и тип запрашиваемых данных:
На следующем экране необходимо ввести название идентификатора клиента (можно оставить стандартное) и Разрешенные URI перенаправления (redirect uri):
И затем нажать кнопку «Создать идентификатор клиента OAuth». На следующем экране необходимо ввести свой адрес электронной почты (желательно google mail) и название продукта:
И нажать кнопку Продолжить. После этого будет создан Client ID. Нажать кнопку Готово.
В итоге будет создан идентификатор клиента и можно скачать JSON файл с информацией (эта информация понадобится для получения и обновления токена).
Шаг 2. Получение токена авторизации
Для того, чтобы получить токен, сначала необходимо получить код авторизации (code) с помощью следующего GET запроса:
- scope — сервис, к которому мы получаем доступ. Для контактов это www.google.com/m8/feeds. Список адресов разных сервисов находится по ссылке https://developers.google.com/identity/protocols/googlescopes;
- access_type — тип доступа. Если вам нужно будет обновлять токены без участия пользователя, обязательно используйте значение offline. Также возможно значение online, но при его выборе необходимо будет каждый раз запрашивать разрешение у пользователя в браузере;
- redirect_uri и client_id — данные, которые указаны в файле проекта, который был скачан на первом этапе;
Параметры этого запроса находятся в файле JSON, который был создан по итогу создания идентификатора клиента. Данный JSON файл имеет следующую структуру:
Данный запрос можно выполнить прямо в браузере в адресной строке. После его выполнения произойдет переход на адрес, указанный в redirect_uri. Также, после редиректа, в адресной строке появится значение code, которое нужно сохранить.
Далее необходимо выполнить POST запрос на получение access token и refresh token. Refresh token понадобится для того, чтобы обновлять токен.
Адрес запроса: https://www.googleapis.com/oauth2/v4/token
Headers: Content-Type : application/x-www-form-urlencoded
Тело запроса:
code=4/ngBzpCV12YOMi_72bHv*****************SHIC_vtowvbiwBNWhOfZxdqLmkdLVvVKvQdBzr5cMNYIjlSTnnUlw7WlI&client_id=89699275998-uc1hne4n257sp6anrbdm7g52t2u405up.apps.googleusercontent.com&client_secret=aW***********d2-BX6X4mrOfJxT&redirect_uri=https://example.org&grant_type=authorization_code
Где code – полученные код из предыдущего шага, client_secret и redirect_uri – значения из json файла.
Пример вызова в Postman:
После выполнения запроса получим JSON c access token и refresh token:
Шаг 3. Подключение Google Sheets в Sherlock
Для использования этого api в Sherlock platform необходимо перейти в Настройки -> Справочники -> Внешние сервера.
И далее добавить новый сервер. Ввести заголовок, тип (Url), URL сервера, тип авторизации Bearer Authorization (т.к. google api использует этот тип авторизации).
В поле Логин указать переменную #GoogleToken# в которую будет сохраняться access token. Поле Пароль оставить пустым. Нажать Сохранить.
Далее надо в сценарии авторизации бота указать необходимые параметры команд для обновления токена, включая client_id, client_secret и Refresh token.