這一系列逐步導覽說明如何運作 Classroom 外掛程式的所有活動部分。每個導覽步驟都會說明特定概念,並在單一網頁應用程式中實作這些概念。目標是協助您設定、配置及推出實用的外掛程式。
外掛程式必須與 Google Cloud 專案互動。如果您不熟悉 Google Cloud,建議先閱讀入門指南。您可以在 Google Cloud 控制台中管理憑證、API 存取權和 Google Workspace Marketplace SDK。如要進一步瞭解 Marketplace SDK,請參閱 Google Workspace Marketplace 應用程式資訊指南頁面。
本指南涵蓋下列主題:
- 使用 Google Cloud 建立網頁,在 Classroom 的 iframe 中顯示。
- 新增 Google 單一登入 (SSO) 服務,並允許使用者登入。
- 發出 API 呼叫,將外掛程式附加至作業。
- 符合外掛程式提交的主要規定和必要功能。
本指南假設您熟悉程式設計和基本的網路開發概念。強烈建議您先閱讀專案設定指南,再開始逐步導覽。本頁面包含重要設定詳細資料,逐步操作說明未完整涵蓋這些內容。
實作範例
如需完整的參考範例,請參閱 Python。Java 和 Node.js 也提供部分實作。這些實作內容是後續頁面中範例程式碼的來源。
下載位置
Python 和 Java 範例位於 GitHub 存放區:
您可以下載 Node.js 範例的 ZIP 檔案:
必要條件
如要準備新外掛程式專案,請參閱下列章節。
HTTPS 憑證
您可以在任何開發環境中代管應用程式,但 Classroom 外掛程式只能透過 https:// 使用。因此,您需要使用 SSL 加密的伺服器,才能部署應用程式,或在外掛程式 iframe 中測試應用程式。
您可以使用 localhost 和 SSL 憑證;如需為本機開發作業建立憑證,請考慮使用 mkcert。
Google Cloud 專案
您必須設定 Google Cloud 專案,才能使用這些範例。如需開始使用的必要步驟總覽,請參閱 Google Cloud 專案建立指南。第一次逐步導覽中的「設定 Google Cloud 專案」一節,也會逐步說明要執行的特定設定動作。
完成後,請以 JSON 檔案格式下載 OAuth 2.0 用戶端 ID,並將這個憑證檔案新增至解壓縮的範例目錄。如要瞭解特定位置的檔案,請參閱「瞭解檔案」。
OAuth 憑證
請按照下列步驟建立新的 OAuth 憑證:
- 前往 Google Cloud 憑證頁面。確認畫面頂端選取的專案正確無誤。
- 按一下「建立憑證」,然後從下拉式選單中選擇「OAuth 用戶端 ID」。
- 在下一個頁面中:
- 將「應用程式類型」設為「網頁應用程式」。
- 按一下「已授權的重新導向 URI」下方的「新增 URI」。為應用程式新增回呼路徑的完整路徑。例如
https://my.domain.com/auth-callback或https://localhost:5000/callback。您會在逐步操作說明的後續步驟中建立及處理這個路徑。你隨時可以編輯或新增這類路線。 - 點選「建立」。
- 接著,您會收到內含新建立憑證的對話方塊。選擇「下載 JSON」選項。將下載的 JSON 檔案複製到伺服器目錄。
特定語言的必要條件
如需最新先決條件清單,請查看每個存放區的 README 檔案。
Python
我們的 Python 範例使用 Flask 架構。您可以從提供的連結下載完整原始碼。
如有需要,請安裝 Python 3.7 以上版本,並確認 pip 可用。
python3 -m ensurepip --upgrade我們也建議您設定並啟用新的 Python 虛擬環境。
python3 -m venv .classroom-addon-envsource .classroom-addon-env/bin/activate
在下載範例中,每個逐步操作說明子目錄都有一個 requirements.txt。您可以使用 pip 快速安裝必要程式庫。使用下列指令安裝第一次導覽所需的程式庫。
cd flask/01-basic-apppip install -r requirements.txt
Node.js
我們的 Node.js 範例使用 Express 架構。您可以從提供的連結下載完整原始碼。
這個範例需要 Node.js 16.13 版以上。
使用 npm 安裝必要的節點模組。
npm installJava
我們的 Java 範例使用 Spring Boot 架構。您可以從提供的連結下載完整原始碼。
如果電腦尚未安裝 Java 11 以上版本,請先完成安裝。
Spring Boot 應用程式可以使用 Gradle 或 Maven 處理建構作業及管理依附元件。這個範例包含 Maven 包裝函式,可確保建構作業順利完成,您不必安裝 Maven 本身。
在專案下載或複製的目錄中,執行下列指令,確保您具備執行專案的必要條件。
java --version./mvnw --version
或在 Windows 執行下列指令:
java -versionmvnw.cmd --version
瞭解檔案
下列各節說明範例目錄的版面配置。
目錄名稱
每個存放區都包含多個名稱開頭為數字的目錄,例如 /01-basic-app/。這些數字對應特定的逐步操作步驟。
每個目錄都包含功能齊全的網頁應用程式,可實作特定逐步解說中說明的各項功能。舉例來說,/01-basic-app/ 目錄包含「建立外掛程式」逐步說明的最終實作項目。
目錄內容
目錄內容會因實作語言而異:
Python
目錄根層級包含下列檔案:
main.py- Python 應用程式進入點。在這個檔案中指定要使用的伺服器設定,然後執行檔案來啟動伺服器。requirements.txt- 執行網頁應用程式所需的 Python 模組。這些模組可使用pip install -r requirements.txt自動安裝。client_secret.json- 從 Google Cloud 下載的用戶端密鑰檔案。請注意,範例封存檔中不包含這個檔案,您應重新命名並將下載的憑證檔案複製到每個目錄根層級。
config.py- Flask 伺服器的設定選項。webapp目錄包含網頁應用程式的內容。包含的內容如下:包含各種頁面 Jinja 範本的
/templates/目錄。包含圖片、CSS 和輔助 JavaScript 檔案的
/static/目錄。routes.py- 網頁應用程式路徑的處理常式方法。__init__.py:webapp模組的初始化工具。這個初始設定檔會啟動 Flask 伺服器,並載入config.py中設定的設定選項。特定逐步解說步驟所需的其他檔案。
Node.js
每個逐步解說步驟都會存放在專屬的子資料夾中。<step>
每個步驟包含:
- JavaScript、CSS 和圖片等靜態檔案位於
./<step>/public資料夾中。 - Express 路由器位於
./<step>/routes資料夾中。 - HTML 範本位於
./<step>/views資料夾中。 - 伺服器應用程式為
./<step>/app.js。
Java
專案目錄包含下列項目:
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中加入 KeyStore 的路徑。 在提供的範例中,這是secrets/*.p12(金鑰儲存區的用途會在下節中討論)。如要進行第 2 個以上的逐步解說,您也應加入client_secret.json檔案的路徑,確保不會在遠端存放區中加入密鑰。在逐步解說 3 以上的內容中,您應新增 H2 資料庫檔案的路徑和檔案資料存放區 Factory。如要進一步瞭解如何設定這些資料儲存區,請參閱處理重複造訪的第三個逐步導覽。mvnw和mvnw.cmd分別是 Unix 和 Windows 的 Maven 封裝執行檔。舉例來說,在 Unix 上執行./mvnw --version會輸出 Apache Maven 版本和其他資訊。.mvn目錄包含 Maven 包裝函式的設定。
執行範例伺服器
您必須啟動伺服器才能進行測試。請按照下列指示,以您選擇的語言執行範例伺服器:
Python
OAuth 憑證
按照先前的說明建立並下載 OAuth 憑證。將 JSON 檔案放在根目錄中,與應用程式的伺服器啟動檔案並列。
設定伺服器
您可以透過多種方式執行網頁伺服器。在 Python 檔案結尾處,新增下列其中一項:
不安全
localhost。請注意,這只適合直接在瀏覽器視窗中測試;不安全的網域無法載入 Classroom 外掛程式 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_context引數指定 SSL 金鑰檔案的元組。if __name__ == "__main__": # Run the web app at https://localhost:5000. app.run(host="localhost", ssl_context=("localhost.pem", "localhost-key.pem"), debug=True)Gunicorn 伺服器。這適用於可投入實際工作環境的伺服器或雲端部署作業。建議您設定
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按一下顯示的網址,在瀏覽器中查看網路應用程式,確認應用程式正常運作。
Node.js
設定伺服器
如要透過 HTTPS 執行伺服器,您需要建立自行簽署的憑證,用於透過 HTTPS 執行應用程式。這些憑證應儲存為存放區根資料夾中的 sslcert/cert.pem 和 sslcert/key.pem。您可能需要在 OS 金鑰鏈中新增這些金鑰,瀏覽器才會接受。
請確認 *.pem 位於 .gitignore 檔案中,因為您不想將檔案提交至 Git。
啟動伺服器
您可以執行下列指令來執行應用程式,並將 step01 替換為要以伺服器形式執行的正確步驟 (例如 step01 代表 01-basic-app,step02 代表 02-sign-in)。
npm run step01或
npm run step02這項操作會在 https://localhost:5000 啟動網路伺服器。
您可以在終端機中按下 Control + C 終止伺服器。
Java
設定伺服器
如要透過 HTTPS 執行伺服器,您需要建立自行簽署的憑證,用於透過 HTTPS 執行應用程式。
建議您在本機開發時使用 mkcert。安裝 mkcert 後,下列指令會產生儲存在本機的憑證,以便透過 HTTPS 執行。
mkcert -installmkcert -pkcs12 -p12-file <path_to_keystore> <domain_name>
這個範例包含資源目錄中的金鑰儲存區檔案。您可以將其儲存在偏好的位置,但請務必相應更新 application.properties 檔案的路徑。網域名稱是您執行專案的網域 (例如 localhost)。
請確認 *.p12 位於 .gitignore 檔案中,因為您不想將檔案提交至 Git。
啟動伺服器
在 Application.java 檔案中執行 main 方法,啟動伺服器。舉例來說,在 IntelliJ 中,您可以在 src/main/java/com/addons/spring 目錄中按一下滑鼠右鍵,然後依序點選 Application.java > Run 'Application',或是開啟 Application.java 檔案,然後點選 main(String[] args) 方法簽章左側的綠色箭頭。或者,您也可以在終端機視窗中執行專案:
./mvnw spring-boot:run或在 Windows 中執行下列指令:
mvnw.cmd spring-boot:run這會在 https://localhost:5000 或 application.properties 中指定的通訊埠啟動伺服器。