Эта серия пошаговых руководств иллюстрирует все движущиеся части работающего дополнения для Класса. Каждый шаг пошагового руководства рассматривает определенные концепции и реализует их в одном веб-приложении. Цель — помочь вам в установке, настройке и запуске функционального дополнения.
Ваше дополнение должно взаимодействовать с проектом Google Cloud . Если вы не знакомы с Google Cloud, рекомендуем прочитать руководства по началу работы . Вы управляете учетными данными, доступом к API и SDK Google Workspace Marketplace в консоли Google Cloud. Дополнительную информацию о Marketplace SDK можно найти на странице руководства по листингу Google Workspace Marketplace .
В этом руководстве рассматриваются следующие темы:
- Используйте Google Cloud, чтобы создать страницу для отображения в iframe в Классе.
- Добавьте систему единого входа Google (SSO) и разрешите пользователям входить в систему.
- Выполняйте вызовы API, чтобы прикрепить надстройку к заданию.
- Укажите ключевые требования к отправке дополнений и необходимые функции.
В этом руководстве предполагается, что вы знакомы с программированием и фундаментальными концепциями веб-разработки. Мы настоятельно рекомендуем прочитать руководство по настройке проекта перед началом пошаговых руководств. На этой странице содержатся важные сведения о конфигурации, которые не полностью описаны в пошаговых руководствах.
Пример реализации
Полный справочный пример доступен на Python . Частичные реализации также доступны в Java и Node.js. Эти реализации являются источниками примера кода, который можно найти на последующих страницах.
Где скачать
Примеры Python и Java доступны в репозиториях GitHub:
Пример Node.js можно загрузить в виде zip-файла:
Предварительные условия
Просмотрите следующие разделы, чтобы подготовить новый проект надстроек.
HTTPS-сертификат
Хотя вы можете разместить свое приложение в любой среде разработки, надстройка для Класса доступна только через https://
. Поэтому вам понадобится сервер с SSL-шифрованием для развертывания вашего приложения или его тестирования в надстройке iframe.
Можно использовать localhost
с сертификатом SSL; рассмотрите mkcert, если вам нужно создать сертификат для локальной разработки.
Проект Google Cloud
Вам необходимо настроить проект Google Cloud для использования с этими примерами. Ознакомьтесь с руководством по созданию проекта Google Cloud, чтобы получить обзор необходимых шагов для начала работы. В разделе «Настройка проекта Google Cloud» в первом пошаговом руководстве также описаны конкретные действия по настройке, которые необходимо выполнить.
По завершении загрузите свой идентификатор клиента OAuth 2.0 в виде файла JSON; вам необходимо добавить этот файл учетных данных в распакованный каталог примера. См. раздел Понимание файлов для определенных расположений.
Учетные данные OAuth
Выполните следующие действия, чтобы создать новые учетные данные OAuth:
- Перейдите на страницу учетных данных Google Cloud . Убедитесь, что в верхней части экрана выбран правильный проект.
- Нажмите CREATE CREDENTIALS и выберите идентификатор клиента OAuth из раскрывающегося списка.
- На следующей странице:
- Установите тип приложения на Веб-приложение .
- В разделе «Разрешенные URI перенаправления» нажмите «ДОБАВИТЬ URI» . Добавьте полный путь для маршрута обратного вызова для вашего приложения. Например,
https://my.domain.com/auth-callback
илиhttps://localhost:5000/callback
. Этот маршрут вы создадите и обработаете позже в этом пошаговом руководстве. Вы можете изменить или добавить больше таких маршрутов в любое время. - Нажмите СОЗДАТЬ .
- Затем вы получите диалоговое окно с вашими вновь созданными учетными данными. Выберите опцию СКАЧАТЬ JSON . Скопируйте загруженный файл JSON в каталог вашего сервера.
Предварительные требования для конкретного языка
Просмотрите файл README в каждом репозитории, чтобы получить самый актуальный список необходимых условий.
Питон
В нашем примере на Python используется фреймворк Flask . Вы можете скачать полный исходный код по предоставленным ссылкам .
При необходимости установите Python 3.7+ и убедитесь, что pip
доступен.
python3 -m ensurepip --upgrade
Мы также рекомендуем вам настроить и активировать новую виртуальную среду Python.
python3 -m venv .classroom-addon-env
source .classroom-addon-env/bin/activate
В каждом подкаталоге пошагового руководства в загруженных примерах есть файл requirements.txt
. Вы можете быстро установить необходимые библиотеки с помощью pip
. Используйте следующие команды для установки необходимых библиотек для первого прохождения.
cd flask/01-basic-app
pip install -r requirements.txt
Node.js
В нашем примере Node.js используется фреймворк Express . Вы можете скачать полный исходный код по предоставленным ссылкам .
Для этого примера требуется Node.js версии 16.13 или более поздней.
Установите необходимые модули узла с помощью npm
.
npm install
Ява
В нашем примере на Java используется фреймворк Spring Boot . Вы можете скачать полный исходный код по предоставленным ссылкам .
Установите Java 11+, если она еще не установлена на вашем компьютере.
Приложения Spring Boot могут использовать Gradle или Maven для обработки сборок и управления зависимостями. Этот пример включает оболочку Maven, которая обеспечивает успешную сборку без необходимости установки самого Maven.
В каталоге, в котором вы скачали или клонировали проект, выполните следующие команды, чтобы убедиться, что у вас есть необходимые условия для запуска проекта.
java --version
./mvnw --version
Или в Windows:
java -version
mvnw.cmd --version
Разобраться с файлами
В следующих разделах описывается расположение примеров каталогов.
Имена каталогов
Каждый репозиторий содержит несколько каталогов, имена которых начинаются с цифры, например /01-basic-app/
. Цифры соответствуют конкретным шагам прохождения. Каждый каталог содержит полнофункциональное веб-приложение, реализующее функции, описанные в конкретном пошаговом руководстве. Например, каталог /01-basic-app/
содержит окончательную реализацию пошагового руководства по созданию надстройки .
Содержимое каталога
Содержимое каталога различается в зависимости от языка реализации:
Питон
В корне каталога находятся следующие файлы:
-
main.py
— точка входа приложения Python. Укажите в этом файле конфигурацию сервера, которую вы хотите использовать, а затем запустите ее, чтобы запустить сервер. -
requirements.txt
— модули Python, необходимые для запуска веб-приложения. Их можно установить автоматически с помощьюpip install -r requirements.txt
. client_secret.json
— секретный файл клиента, загруженный из Google Cloud. Обратите внимание, что это не включено в архив примеров; вам следует переименовать и скопировать загруженный файл учетных данных в корень каждого каталога.
-
config.py
— параметры конфигурации сервера Flask.Каталог
webapp
содержит содержимое веб-приложения. Он включает в себя следующее:Каталог
/templates/
с шаблонами Jinja для различных страниц.Каталог
/static/
с изображениями, CSS и вспомогательными файлами JavaScript.routes.py
— методы обработчика маршрутов веб-приложения.__init__.py
— инициализатор модуляwebapp
. Этот инициализатор запускает сервер Flask и загружает параметры конфигурации, установленные вconfig.py
.Дополнительные файлы, необходимые для конкретного шага пошагового руководства.
Node.js
Каждый шаг пошагового руководства можно найти в отдельной подпапке <step>
. Каждый шаг содержит:
- Статические файлы, такие как JavaScript, CSS и изображения, находятся в папке
./<step>/public
public. - Маршрутизаторы Express находятся в папках
./<step>/routes
routes. - HTML-шаблоны находятся в папках
./<step>/views
views. - Серверное приложение —
./<step>/app.js
.
Ява
Каталог проекта включает в себя следующее:
- Каталог
src.main
содержит исходный код и конфигурацию для успешного запуска приложения. Этот каталог включает в себя следующее: + Каталогjava.com.addons.spring
содержит файлыApplication.java
иController.java
. ФайлApplication.java
отвечает за работу сервера приложений, а файлController.java
отвечает за логику конечной точки. + каталогresources
содержит каталогtemplates
с файлами HTML и JavaScript. Он также содержит файлapplication.properties
, в котором указывается порт для запуска сервера, путь к файлу хранилища ключей и путь к каталогуtemplates
. Этот пример включает файл хранилища ключей в каталогеresources
. Вы можете сохранить его где угодно, но обязательно обновите файлapplication.properties
, указав соответствующий путь.-
pom.xml
содержит информацию, необходимую для сборки проекта и определения необходимых зависимостей. -
.gitignore
содержит имена файлов, которые не следует загружать в git. Убедитесь, что вы добавили путь к своему хранилищу ключей в этом.gitignore
. В приведенном примере этоsecrets/*.p12
(назначение хранилища ключей обсуждается в разделе ниже). В пошаговом руководстве 2 и последующих вам также следует указать путь к файлуclient_secret.json
, чтобы гарантировать, что вы не включите свои секреты в удаленный репозиторий. Для пошагового руководства 3 и последующих необходимо добавить путь к файлу базы данных H2 и фабрике хранилища файловых данных. Дополнительную информацию о настройке этих хранилищ данных можно найти в третьем пошаговом руководстве по обработке повторных посещений . -
mvnw
иmvnw.cmd
— это исполняемые файлы-оболочки Maven для Unix и Windows соответственно. Например, запуск./mvnw --version
в Unix помимо прочей информации выводит версию Apache Maven. - Каталог
.mvn
содержит конфигурацию оболочки Maven.
-
Запустите образец сервера
Вам необходимо запустить сервер, чтобы протестировать его. Следуйте этим инструкциям, чтобы запустить пример сервера на выбранном вами языке:
Питон
Учетные данные OAuth
Создайте и загрузите свои учетные данные OAuth, как описано ранее . Поместите файл JSON в корневой каталог рядом с файлом запуска сервера вашего приложения.
Настроить сервер
У вас есть несколько вариантов запуска веб-сервера. В конце вашего файла Python добавьте одно из следующего:
Незащищенный
localhost
. Обратите внимание, что это подходит только для непосредственного тестирования только в окне браузера; незащищенные домены невозможно загрузить в надстройку iframe для Класса.if __name__ == "__main__": # Disable OAuthlib's HTTPs verification. os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1" # Run the web app at http://localhost:5000. app.run(debug=True)
Безопасный
localhost
. Вы должны указать кортеж файлов ключей SSL для аргументаssl_context
.if __name__ == "__main__": # Run the web app at https://localhost:5000. app.run(host="localhost", ssl_context=("localhost.pem", "localhost-key.pem"), debug=True)
Сервер Гуникорн . Это подходит для готового к работе сервера или облачного развертывания. Мы рекомендуем установить переменную среды
PORT
для использования с этим вариантом запуска.if __name__ == "__main__": # Run the web app at https://<your domain>:<server_port>. # Defaults to https://<your domain>:8080. server_port = os.environ.get("PORT", "8080") app.run(debug=True, port=server_port, host="0.0.0.0")
Запустить сервер
Запустите приложение Python, чтобы запустить сервер, настроенный на предыдущем шаге.
python main.py
Щелкните появившийся URL-адрес, чтобы просмотреть свое веб-приложение в браузере и убедиться, что оно работает правильно.
Node.js
Настроить сервер
Чтобы запустить сервер через HTTPS, вам необходимо создать самосертификат, который будет использоваться для запуска приложения через HTTPS. Эти учетные данные следует сохранить как sslcert/cert.pem
и sslcert/key.pem
в корневой папке репозитория. Возможно, вам придется добавить эти ключи в цепочку ключей вашей ОС, чтобы ваш браузер мог их принять.
Убедитесь, что *.pem
находится в вашем файле .gitignore
, поскольку вы не хотите фиксировать этот файл в git.
Запустить сервер
Вы можете запустить приложение с помощью следующей команды, заменив step01
на правильный шаг, который вы хотите выполнить в качестве сервера (например, step01
для 01-базовое-приложение и step02
для 02-вход).
npm run step01
или
npm run step02
Это запустит веб-сервер по адресу https://localhost:5000
.
Вы можете завершить работу сервера с помощью Control + C
в своем терминале.
Ява
Настроить сервер
Чтобы запустить сервер через HTTPS, вам необходимо создать самосертификат, который будет использоваться для запуска приложения через HTTPS.
Рассмотрите возможность использования mkcert для локальной разработки. После установки mkcert
следующие команды генерируют локально хранимый сертификат для работы через HTTPS.
mkcert -install
mkcert -pkcs12 -p12-file <path_to_keystore> <domain_name>
Этот пример включает файл хранилища ключей в каталоге ресурсов. Вы можете сохранить его где угодно, но обязательно обновите файл application.properties
, указав соответствующий путь. Доменное имя — это домен, на котором вы запускаете проект (например, localhost
).
Убедитесь, что *.p12
находится в вашем файле .gitignore
, поскольку вы не хотите фиксировать файл в git.
Запустить сервер
Запустите сервер, запустив main
метод в файле Application.java
. Например, в IntelliJ вы можете либо щелкнуть правой кнопкой мыши Application.java
> Run 'Application'
в каталоге src/main/java/com/addons/spring
, либо открыть файл Application.java
и щелкнуть зеленую стрелку слева от подпись метода main(String[] args)
. Альтернативно вы можете запустить проект в окне терминала:
./mvnw spring-boot:run
или в Windows:
mvnw.cmd spring-boot:run
Это запустит сервер по адресу https://localhost:5000
или по порту, указанному в application.properties
.