Почему нельзя предоставить конечному пользователю разрешение на использование веб-приложения Google Apps Script с токеном на предъявителя? - PullRequest
2 голосов
/ 04 февраля 2020

Я занимаюсь разработкой настольного приложения, которое использует Google Sheet API v4. В приложении Project в консоли GCP доступны следующие области экрана согласия OAuth:

https://www.googleapis.com/auth/drive

https://www.googleapis.com/auth/spreadsheets

https://www.googleapis.com/auth/userinfo.email

Я могу получить токен доступа OAuth (плюс токен refre sh) из моего настольного приложения через поток кода авторизации. Я могу получить список таблиц и все имена их вкладок, например, c с помощью вызовов cURL, когда добавляю маркер доступа в виде заголовка Authorization : Bearer {{token}}.

Теперь я написал простой скрипт Google Apps, который я связал с проектом настольного приложения в консоли GCP с помощью пункта меню «Ресурсы> Проект облачной платформы». Затем я развернул «Сценарий приложений» как веб-приложение Google со следующими настройками в диалоговом окне «Publi sh> Развернуть как веб-приложение»:

Execute the app as: User accessing the web app

и

Who has access to the app: Anyone

Манифест для Google Apps Script Web App содержит следующее для областей OAuth:

"oauthScopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/userinfo.email"]

Теперь я решил, что, поскольку области настольных приложений одинаковы как развернутое веб-приложение, токена доступа, который я получаю из исходного кода авторизации, будет достаточно, чтобы предоставить конечному пользователю разрешение на доступ и использование веб-приложения. Однако когда я тестирую веб-приложение, вызывая его через cURL, я получаю ответ:

Drive
You Need Permission
Want In? Ask for access, or switch to an account with permission. Learn more

You are signed in as end-user@sampledomain.com

На основе оператора You are signed in as... экран разрешений веб-приложения делает " знать адрес электронной почты конечного пользователя настольного приложения.

Можно ли использовать маркер начального доступа, полученный конечным пользователем через мое настольное приложение, для успешного взаимодействия с развернутым веб-приложением? Или же конечному пользователю необходимо авторизовать ОБА настольное приложение (для извлечения файлов Drive Spreadsheet, et c.) И веб-приложение, которое запрашивает и обновляет лист? Я бы предпочел, чтобы пользователь НЕ должен был давать разрешение дважды. Возможно ли, чтобы пользователь предоставил разрешение ТОЛЬКО настольному приложению, которое также предоставит разрешение веб-приложению?

Если конечный пользователь ДОЛЖЕН предоставить разрешение как настольному приложению, так и веб-приложению, я не знаете, как получить токен доступа с экрана разрешений веб-приложения. Если конечный пользователь предоставляет доступ к веб-приложению в явном виде, действует ли это разрешение навсегда для электронной почты конкретного пользователя? Я не уверен, что мы можем использовать поток кода авторизации OAuth для развернутого веб-приложения.

Любое понимание или руководство приветствуются!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...