Как избежать запроса авторизации сценария, когда пользователь G-Suite обращается к сценарию доверенного приложения G-Suite? - PullRequest
0 голосов
/ 07 февраля 2019

Я написал скрипт приложения, который предоставляет веб-интерфейс для ввода данных в календарь команды.Я опубликовал его, используя учетную запись супер-администратора G-Suite, и добавил его в качестве доверенного приложения в разделе «Разрешения безопасности / API».«Доверительные доменные приложения» отмечены в «Внутренних настройках приложения».

Когда пользователь G-Suite в нашей организации пытается получить доступ к приложению, он видит

«РазработчикShiftSchedulingApp, admin@_our_organization_.org, требуется ваше разрешение для доступа к вашим данным в Google. "

Те, кто достаточно смел, чтобы нажать" Разрешения на просмотр ", переходят к следующему сообщению:

«ShiftSchedulingApp хочет получить доступ к вашей учетной записи Google. Смотрите, редактируйте, делитесь и навсегда удаляйте все календари, к которым вы можете получить доступ с помощью Календаря Google» *

Конечно, никто не хочет рисковать потерей всехкалендари в их учетной записи Google, и на этом все заканчивается.

Как мне избавиться от этого вводящего в заблуждение сообщения?Это не учетная запись Google, это учетная запись организации в G-Suite.Это не все их календари, это общий календарь команды.Это добавление данных, а не удаление календарей навсегда.Он опубликован их администратором в G-Suite, а не неизвестной третьей стороной.

Я потратил несколько дней, пытаясь убрать это сообщение, но не повезло.Приложение должно выполняться как пользователь, выполняющий доступ, а не как пользователь публикации, потому что его идентификатор пользователя определяет, какие сдвиги они могут выполнять в календаре.

Буду признателен за любые подсказки, указывающие мне правильное направление.


Я экспериментировал с вариантами подхода с двумя приложениями, как было предложено.

Приложение, которое предоставляет пользовательский интерфейс, должно читать календарь для отображения доступных смен - поэтому я не могу уйти от авторизации пользователянезамедлительный.

Еще один вариант, который я попробовал, состоял в том, чтобы одно приложение делало все и работало как я, а другое - ничего, кроме возврата Session.getActiveUser ().Я попытался вызвать 2-й из 1-го на стороне клиента через XMLHttpRequest.Это было бы идеально для моих нужд - но я сталкиваюсь с ошибкой CORS, поскольку URL-адрес приложения - script.google.com, но на самом деле он перенаправляется на script.googleusercontent.com.Кажется, нет способа установить CORS в Google App Script.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Хотя мне не удалось найти способ не запрашивать у пользователей авторизацию при выполнении приложения как пользователя, осуществляющего доступ, оказалось, что мои причины для этого были основаны на ложной предпосылке.

Я решил опубликовать приложение как пользователь с правами доступа, потому что я думал, что это единственный способ получить идентификатор пользователя, что справедливо для учетных записей не G Suite.

Однако, когда приложение публикуетсяучетная запись G Suite, приложение может получать доступ к идентификаторам пользователей в том же домене G Suite, даже если оно настроено для выполнения в качестве пользователя публикации.

Спасибо Niek и TheMaster за помощь!

0 голосов
/ 07 февраля 2019

Если вам просто нужно user ID, почему вы запрашиваете все эти разрешения?

Возможные решения:

  • 2 веб-приложения - одно работает как вы, а другое - как пользователь, имеющий доступ (только для профиля), к разрешению.Второй будет актуальным веб-интерфейсом и POST необходимой информацией для первого с привилегиями.ИЛИ

  • Создайте свое собственное веб-приложение Google-войдите в систему 1

  • Используйтенаименее разрешительный 2 охват 3

...