Я работаю над проектом скрипта Google Apps (может быть связан с электронной таблицей или автономно), который будет развернут как веб-приложение, и я хочу предоставить пользователям доступ на основе
- 1) Вход в Google (некоторым пользователям будет предоставлен доступ или доступ будет запрещен для некоторых) для некоторых пользователей и
- 2) имя пользователя / пароль для остальных.
1) Вход в Google
Я нашел это более хитрым, чем я предполагал. Я ожидал существования некоторых простых функций / методов, которые могут заставить его работать так, как я хочу, с гарантированным уровнем безопасности Google. Сначала я нашел следующее: https://developers.google.com/identity/sign-in/web/. Сначала это выглядело очень просто, поэтому я попытался реализовать этот код: https://developers.google.com/identity/sign-in/web/build-button,, но я застрял на шаге после заполнения content="YOUR_CLIENT_ID.apps.googleusercontent.com"
. Я правильно заполнил CLIENT_ID
из Google Cloud Platform
раздела Credentials
и попытался войти в свой опубликованный проект. Я получил это:
Ошибка: redirect_uri_mismatch
Исходный код JavaScript в запросе, https://n -__________________________________- script.googleusercontent.com ,
не совпадает с авторизованным для клиента OAuth. Визит
https://console.developers.google.com/apis/credentials/oauthclient/___________.apps.googleusercontent.com?project=_____ для обновления авторизованного
Происхождение JavaScript.
Итак, я скопировал первую ссылку, затем поставил googleuser.com
на Authorized domains
, а затем вставил ссылку в Authorized JavaScript origins
. Но мне не разрешили его сохранить, и это выскочило:
Ошибка
У вас нет разрешения на выполнение этого действия.
номер для отслеживания: c411401060
Я не знаю почему. Несколько месяцев назад что-то подобное не было проблемой. Я полагаю, это как-то связано с новой политикой ограниченных областей действия Google. Я пытался заставить это работать для связанного и автономного проекта без разницы в результатах. Итак, наконец (частично из-за этой схемы: https://developers.google.com/identity/sign-in/web/server-side-flow
) я пришел к выводу, что вся концепция входа в систему для веб-сайтов не предназначена для использования в опубликованном проекте скриптов приложений.
а) Я не прав? Если нет, то как я могу заставить его работать, пожалуйста?
б) Почему я получил ошибку - номер для отслеживания: c411401060? Кто-нибудь знает?
Так что я продолжал искать решение где-то еще. Наиболее похожий вопрос, который я нашел здесь: Веб-приложение скрипта приложения Google, как создать кнопку входа в систему? . Но прошло уже более трех лет с не очень удовлетворительными ответами (или я их не понимаю):
в) Действительно ли мне нужно публиковать более одного проекта одновременно, чтобы предоставить доступ для некоторых пользователей, а для некоторых без учетной записи Google? Как только пользователи вошли в систему, как они могут выйти? Разве нет простого способа надежной проверки идентификатора пользователя или gmail?
d) Есть ли у кого-нибудь работающий пример кода? Как начинающий, я очень ценю пример, потому что держу пари, что если есть простое решение, я уже читал об этом, но я не заметил, что это то, что мне нужно.
2) имя пользователя / пароль
Хотя мне было десять лет, я нашел полезным прочитать это Полное руководство по аутентификации веб-сайтов на основе форм . Или, по крайней мере, я не знал лучшей статьи, с чего начать. Ссылки приветствуются.
Моя идея о том, как ввести имя пользователя и пароль, заключается в том, что я сделаю функцию на стороне сервера, вызываемую пользователем через google.script.run
, и эта функция будет проверять правильность имени пользователя и пароля. a) Это безопасно? Теперь, когда пользователь вошел в систему, могу ли я просто позволить веб-приложению работать? Я имею в виду, что пользователь отправил имя пользователя и пароль, так что приложение просто продолжит работать без какой-либо другой техники? б) Или я сделаю приложение более безопасным, если после входа я позволю какой-нибудь серверной функции генерировать случайную строку, которая будет отправлена клиенту и послужит токеном для сеанса?
Лучшие практики, советы, коды, источники приветствуются!
Спасибо