Можно ли разрешить пользователям разрешать доступ к электронной почте в веб-приложении с помощью Google apps script?

#google-apps-script #cookies #authorization

#google-apps-script #файлы cookie #авторизация

Вопрос:

Я изучал возможность использования файлов cookie для создания сеансов и отслеживания привилегий пользователей. Итак, я создал базовый код для веб-приложения, в котором вы нажимаете кнопку, и открывается доступ к электронной почте активного пользователя. Вот скрипт Google (Code.gs ):

 function doGet(){
  return HtmlService.createHtmlOutputFromFile('Index');
}

function getUser(){
  var email = Session.getActiveUser().getEmail();
  return email;
}
  

Вот HTML-скрипт (Index.html ):

 <!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <button onclick="recordUser()">Click me</button>
    
    
    
    <script>
      function recordUser(){
        google.script.run.withSuccessHandler(function(email){
           
           alert(email  " is the user email.");
        }).getUser();
      }
    </script>
    
  </body>
</html>
  

Это вывод HTML

«Для выполнения этого действия требуется авторизация». Насколько я понимаю, это означает, что каждый пользователь веб-приложения должен каким-то образом предоставить авторизацию скрипту Google, разрешающему доступ к электронной почте. Итак, я попытался сделать так, чтобы скрипт имел область действия email info. На самом деле это не работает — и я тоже этого не ожидал.

Вот как выглядят мои свойства проекта> области

Итак, есть ли какой-либо способ получить доступ к активным пользователям с помощью запроса авторизации или с помощью какого-либо обходного пути? Спасибо.

Комментарии:

1. Привет, не совсем уверен, в чем проблема. Если у вас есть этот код и вы публикуете его как веб-приложение, Google обрабатывает авторизацию, файлы cookie и т. Д.

2. Создайте дополнение

3. @miturbe Извините, я буду более конкретным. Я просто пытаюсь получить электронную почту нового пользователя моего веб-приложения одним нажатием кнопки прямо сейчас (в будущем я, вероятно, посмотрю, смогу ли я сделать это при открытии веб-приложения). Однако, когда я запускаю веб-сайт, 1) кнопка не появляется. 2) по-видимому, пользователю необходимо предоставить авторизацию для запуска .getActiveUser().getEmail(). Итак, я спрашиваю, есть ли способ разрешить пользователю предоставлять эту авторизацию или есть лучший метод.

4. @Cooper как конкретно это поможет, создав дополнение? Я не делал этого раньше.

5. Когда вы публикуете как веб-приложение, пользователь должен авторизоваться перед загрузкой страницы. Вы не можете контролировать, когда пользователь авторизует. Кроме того, если это будет сценарий publc, они получат огромное предупреждение о том, что приложение не проверено … посмотрите этот пример script.google.com/macros/s /… source:docs.google.com/spreadsheets/d /…

Ответ №1:

Session.getActiveUser().getEmail() возвращает адрес электронной почты текущего пользователя, но есть пара вещей, которые нужно сделать в первую очередь:

1. При развертывании вашего веб-приложения в разделе Выполнить приложение как: выберите Пользователь, получающий доступ к веб-приложению.

2. Перед запуском веб-приложения пользователь должен авторизовать веб-приложение для запуска от его имени.

Это должно сработать, я уже протестировал это.