Не программируй — вставляй и копируй. OAuth 2.0 авторизация API Google, получение токенов доступа (refresh и access token)
Без программирования, в несколько кликов — простой и быстрый способ трехногой авторизации по протоколу OAuth 2.0 в Google APIs. Получение refresh и первого access token для использования в HTTP-запросах из 1С к API Google. Для приложений типа «Компьютеры».
- Описание
- Подробнее
Описание
При использовании некоторых API Google (например Sheets API, Calendar API, Drive API) — в HTTP-запросах необходимо указывать заголовок "Authorization:Bearer {access_token}". Когда я знакомился с Google Sheets API, то отметил, что уйдет далеко не пара минут на изучение и программирование процесса получения токена, который позволяет обратиться к этому API. Причем refresh token выдается раз и практически навсегда. Получается, нужно тратить время на программирование того, что понадобится один раз. Предлагаю быстрый способ получения refresh и первого access токенов вообще без программирования. Работает для приложений типа "Компьютеры".
Можете попробовать прямо здесь. Нажмите "Get code", войдите/выберите свой аккаунт гугл, разрешите доступ, получите код, вставьте полученный код в зеленое поле "code:" и нажмите "Get tokens". Браузер покажет необходимые токены.
Если у Вас есть свой Идентификатор клиента OAuth 2.0 типа "Компьютеры" (что у Вас есть — смотрите в https://console.developers.google.com/apis/credentials), то можете вставить сюда свои scope, client_id (в 2 поля), client_secret — и получить свои токены. Или создайте новые учетные данные с типом "Приложение для ПК" по этой же ссылке, определитесь с нужными API и scope — и пробуйте.
Вкратце на этом всё, процесс закончен.
Но если пробовать здесь не хотите — можете создать у себя текстовый файл с расширением html следующего содержания:
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
.danstyle {}
.danstyle label {
display: inline-block;
width: 100px;
}
.danstyle input {
width: 500px;
}
</style>
</head>
<body>
<form class="danstyle" target="_blank" action="https://accounts.google.com/o/oauth2/v2/auth" method="get">
<p><label>scope:</label><input type="text" name="scope" value="https://www.googleapis.com/auth/calendar.settings.readonly https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.appdata"></p>
<p><label>client_id:</label><input type="text" name="client_id" value="1043317717582-spu6uac6ajeu4kht399nabq41jrh4nub.apps.googleusercontent.com"></p>
<input type="hidden" name="redirect_uri" value="urn:ietf:wg:oauth:2.0:oob">
<input type="hidden" name="response_type" value="code">
<p><input style="width:100px;" type="submit" value="Get code"></p>
</form>
<br>
<form class="danstyle" action="https://oauth2.googleapis.com/token" enctype="application/x-www-form-urlencoded" method="post">
<p><label>code:</label><input style="background-color: #90ee90;" type="text" name="code"></p>
<p><label>client_id:</label><input type="text" name="client_id" value="1043317717582-spu6uac6ajeu4kht399nabq41jrh4nub.apps.googleusercontent.com"></p>
<p><label>client_secret:</label><input type="text" name="client_secret" value="1dEoQ9sdUgsqcQahYz3nP9dk"></p>
<input type="hidden" name="redirect_uri" value="urn:ietf:wg:oauth:2.0:oob">
<input type="hidden" name="grant_type" value="authorization_code">
<p><input style="width:100px;" type="submit" value="Get tokens"></p>
</form>
</body>
</html>
Сохраняем html-файл (я назвал его GoogleOauth.html), открываем его в интернет-браузере.
Первым делом жмем кнопку "Get code". Если в браузере Вы еще не входили в аккаунт гугл — предложат войти. Если входили — откроется страница выбора аккаунта. К данным этого аккаунта мы предоставляем доступ приложению:
Кликаем аккаунт, отвечаем "Разрешить" на вопросы, откроется экран согласия (consent screen):
Жмем кнопку "Разрешить" — попадаем на страницу с кодом:
Копируем полученный код, возвращаемся к странице с нашим файлом GoogleOauth.html, вставляем в зеленое поле "code:" полученный код:
Наконец, нажимаем кнопку "Get tokens". В итоге браузер перейдет на страницу, где будет выведен текст JSON следующего содержания:
В результате мы получили "вечный" refresh_token и временный access_token, которые далее используем в запросах к API Google.
В примере выше для демонстрации по умолчанию подставляются client_id, client_secret и минимальные scope от моей тестовой учетки. Свою учетку Вы можете создать в консоли разработчика https://console.developers.google.com/apis/credentials , вверху страницы кликните "+ СОЗДАТЬ УЧЕТНЫЕ ДАННЫЕ" — "Идентификатор клиента OAuth" — тип приложения "Приложение для ПК".
После создания гугл выдаст client_id и client_secret — их и нужно вставить в браузер, в рассмотренную выше форму GoogleOauth.html Обратите внимание, client_id нужно вставить два раза в два одноименных поля. После вставки своих client_id client_secret а также необходимых Вам scope — производим все клики и получаем рабочие токены.
Немного о scope, которые мы видим в форме. Здесь нужно указать API-scope, необходимые для Вашего приложения. Перечень существующих scope можно посмотреть на странице https://developers.google.com/identity/protocols/oauth2/scopes , а scope необходимые в работе конкретного API — в инструкциях к этому API. Scope указываются через пробел. В Вашем проекте должны быть подключены API, соответствующие запрашиваемым scope, иначе отобразится ошибка.
access_token живет один час, потом надо брать свежий. Для этого нужно из 1С выполнить HTTP-запрос с предъявлением "вечного" refresh_token — и Вам выдадут очередной access_token: https://developers.google.com/identity/protocols/oauth2/native-app?hl=ru#offline