Получение и использование токенов доступа после аутентификации пользователя в веб-приложении Google - PullRequest
1 голос
/ 06 августа 2020

Я разработал веб-приложение скрипта приложений Google в сочетании с приложением MIT App Inventor, которое будет / должно разрешать пользователю доступ к его собственному диску / листам / документам Google.

У меня проблемы подключение к веб-приложению через веб-компонент приложения Appinventor (не веб-просмотр) после того, как пользователь дал свое разрешение на использование веб-приложения через браузер своего устройства по умолчанию (Chrome).

Мое веб-приложение подключен к Google Cloud Console и был проверен группой доверия и безопасности Google. Для приложения установлено значение «Пользователь, оценивающий приложение» и «Любой». Я не могу использовать собственный веб-просмотр в AppInventor, потому что Google заблокировал это для аутентификации в 2016 году.

Веб-компонент предлагает функции GET / POST / PUT HTTP, но я не знаю, как получить коды авторизации и токены для пользователя, чтобы получить доступ к веб-приложению. (Примечание; веб-приложение не имеет GUI, оно просто получает запросы GET и возвращает текст / строковый json вывод для ряда функций.) Мне удалось перевести многие примеры curl в других ситуациях с хорошим эффектом с помощью веб-компонент, но не для 0Auth.

Я изо всех сил старался прочитать и использовать предложения Google по 0Auth, но просто заблудился на полпути, как всегда, ничего из того, что я делаю, не похоже на предоставлены примеры или документация.

Следовательно, как мне создать URL-адреса HTTP GET со всеми уже имеющимися кодами авторизации и токенами, которые позволят веб-приложению работать на пользователя?

Простой запрос будет выглядеть так:

https://script.google.com/macros/s/AKfycbyZ_27nLOKi8ssX........Bz40yAbGfJt_TRswvm6zpY/exec?func=authenticate

, который вернет текстовый вывод «Прошедший проверку»

В веб-браузере (Chrome) все это довольно просто для пользователя. Если они вошли в свою учетную запись Google в браузере, они go по URL-адресу, предоставленному для моего веб-приложения, им будет предложено пройти аутентификацию и предоставить моему веб-приложению доступ к своей учетной записи Google. После принятия 'magi c' происходит в браузере (любое 'magi c' происходит в конце веб-приложения?), И пока они остаются в системе, они могут использовать браузер для отправки запросов GET (URL-адреса с параметрами) в веб-приложение и просмотрите результаты, возвращаемые в их браузере. Счастливые дни.

По моему сценарию, у меня нет подходящего веб-браузера, поддерживающего все вышеперечисленное. У меня есть веб-компонент, который может отправлять запросы GET / POST веб-службам и обрабатывать ответы сервера. (думайте об этом как о веб-терминале). Поэтому я могу (надеюсь) создавать URL-адреса со всем правильным контентом, кодами и параметрами. Помните, что это должно быть просто для пользователя, который не будет заинтересован в «серверных» действиях, он просто захочет использовать приложение для выполнения действий на своем диске Google.

Им нужно, Я думаю, по крайней мере, выполнить аутентификацию в веб-браузере, чтобы связать свою учетную запись Google с веб-приложением. Затем с помощью веб-компонента подключитесь к веб-приложению, используя коды авторизации и токены доступа, как их (их учетную запись google), чтобы действия веб-приложения происходили на их диске google. Как указано выше, для веб-приложения установлено значение «Пользователь, имеющий доступ к приложению» и «Любой». Это та часть, с которой мне нужна помощь. Я не понимаю, что мне нужно сделать, чтобы подключить пользователя к веб-приложению без использования веб-браузера.

Я имею в виду такие вещи: https://developers.google.com/gdata/articles/using_cURL

1 Ответ

2 голосов
/ 08 августа 2020

Ваши настройки и цель веб-приложений следующие.

  • Веб-приложения развернуты как Who has access to the app: Anyone.
  • Вы хотите предоставить пользователям доступ к веб-приложениям.

Проблема и решение:

В текущей ситуации существуют следующие ситуации для использования веб-приложений.

  • Когда пользователи получают доступ к веб-приложениям с помощью к каждому браузеру пользователи могут получить доступ, войдя в каждую учетную запись Google.
  • Если вы хотите предоставить пользователям доступ к методам (например, команде curl и скрипту), за исключением браузера, необходимо предоставить общий доступ проект скрипта Google Apps для веб-приложений с пользователями.

К сожалению, похоже, что вышеуказанная ситуация является текущей спецификацией. Я подтвердил изменение этой спецификации 11 апреля 2018 г. До этого изменения пользователи могли получить доступ к веб-приложениям с помощью команды curl и сценария с токеном доступа без совместного использования проекта скрипта Google Apps. В соответствии с изменением спецификации, когда проект используется совместно с пользователями, пользователи могут получить доступ к веб-приложениям, используя токен доступа.

В этом случае необходимо включить токен доступа в заголовки запроса. Потому что на текущем этапе access_token=### в качестве параметров запроса использовать нельзя. Ref

Примечание:

  • Исходя из этой ситуации, я думаю, что при совместном использовании проекта Google Apps Script это не то направление, которое вы ожидаете на текущем этапе, веб-приложения с Who has access to the app: Anyone не могут использоваться этим методом, кроме браузера.

Ссылки:

...