Каталог решений - Не программируй — вставляй и копируй. OAuth 2.0 авторизация API Google, получение токенов доступа (refresh и access token)

Не программируй — вставляй и копируй. OAuth 2.0 авторизация API Google, получение токенов доступа (refresh и access token)

Не программируй — вставляй и копируй. 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". Браузер покажет необходимые токены.

scope:

client_id:

code:

client_id:

client_secret:

Если у Вас есть свой Идентификатор клиента 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

has been added to your cart:
Оформление заказа