Как получить все электронные письма пользователя, когда они вошли в систему с несколькими учетными записями? - PullRequest
1 голос
/ 23 октября 2019

У меня есть Google Web App для школы, в которой есть домен для G Suite, т.е. адреса электронной почты: @ theschool.org. Приложение подключено к электронной таблице, содержащей белый список адресов электронной почты (учителей в школе), которым разрешен доступ к приложению. Все остальные получают сообщение «Отказано в доступе» при загрузке страницы. Сценарий использует Session.getEffectiveUser().getEmail() для получения электронной почты пользователя и сравнения ее со списком.

Некоторые пользователи используют персональные устройства или устройства Chromebook, когда они входят в свою личную учетную запись Gmail и учетную запись домена школы. Некоторые эксперименты показали, что в этой ситуации Session.getEffectiveUser().getEmail() и Session.getActiveUser().getEmail() всегда возвращают адрес электронной почты для учетной записи, которая была зарегистрирована в first , что означает, что пользователям отказывают в доступе, даже если они вошли в систему. (позже) с их учетной записью в белом списке. В настоящее время они должны выйти из всех учетных записей, а затем войти в школьную учетную запись, чтобы получить доступ.

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

Документация Google накласс User и класс Session ничего не говорят о нескольких учетных записях.

1 Ответ

1 голос
/ 24 октября 2019

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

Ответ:

Это невозможно с помощью скрипта приложения.

Объяснение:

Google Apps Script - это основанный на JaveScript облачный язык , который не работает на локальном компьютере пользователя. Он не может получить доступ к какой-либо информации в локальном сеансе и, следовательно, может видеть только, какой пользователь является активным пользователем, вошел в систему и запустил сценарий.

Единственная информация о сеансе, доступная через Apps Script, - , определенная вДокументация :

  • getActiveUser() - Получает информацию о текущем пользователе.
  • getActiveUserLocale() - Получает настройку языка текущего пользователя в виде строки - например,en для английского языка.
  • getEffectiveUser() - получает информацию о пользователе, от имени которого выполняется скрипт.
  • getScriptTimeZone() - получает часовой пояс скрипта.
  • getTemporaryActiveUserKey() - получает временный ключ, который является уникальным для активного пользователя, но не раскрывает личность пользователя.

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

Ссылки:

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