Я занимаюсь разработкой настольного приложения, которое использует 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 для развернутого веб-приложения.
Любое понимание или руководство приветствуются!