逐步操作說明

這一系列的操作說明會示範 Classroom 外掛程式的所有運作元件。每個逐步操作步驟都會說明特定概念,並在單一網頁應用程式中實作這些概念。目的是協助您設定、配置及啟動功能性外掛程式。

外掛程式必須與 Google Cloud 專案互動。如果您不熟悉 Google Cloud,建議您參閱入門指南。您可以在 Google Cloud 控制台中管理憑證、API 存取權和 Google Workspace Marketplace SDK。如要進一步瞭解 Marketplace SDK,請參閱 Google Workspace Marketplace 產品資訊指南頁面。

本指南涵蓋下列主題:

  • 使用 Google Cloud 建立要以 iframe 顯示在 Classroom 中的頁面。
  • 新增 Google 單一登入 (SSO) 功能,並允許使用者登入。
  • 發出 API 呼叫,將外掛程式附加到作業中。
  • 說明主要外掛程式提交規定和必要功能。

本指南假設您已熟悉程式設計和網路開發的基本概念。強烈建議您在開始操作前,先閱讀專案設定指南。本頁含有部分不在逐步操作說明中的重要設定詳細資料。

實作範例

您可以在 Python 中找到完整的參考範例。JavaNode.js 中也提供部分實作項目。這些實作內容是後續頁面中範例程式碼的來源。

下載裝置

Python 和 Java 範例可在 GitHub 存放區中找到:

您可以下載 Node.js 範例的 ZIP 檔案:

必要條件

請參閱下列各節,準備新的外掛程式專案。

HTTPS 憑證

儘管您可以在任何開發環境託管應用程式,但只有 https:// 才能使用 Classroom 外掛程式。因此,您需要採用 SSL 加密的伺服器,才能部署應用程式或在外掛程式 iframe 中進行測試。

localhost 可搭配 SSL 憑證使用。如果您需要為本機開發作業建立憑證,請考慮使用 mkcert

Google Cloud 專案

您必須先設定 Google Cloud 專案,才能使用這些範例。如需相關步驟總覽,請參閱 Google Cloud 專案建立指南。第一篇逐步操作說明的「設定 Google Cloud 專案」一節也逐步說明您可以採取的特定設定動作。

完成後,請將 OAuth 2.0 用戶端 ID 下載為 JSON 檔案;您需要將這個憑證檔案新增至解壓縮的範例目錄。如需特定位置資訊,請參閱「瞭解檔案」。

OAuth 憑證

請按照下列步驟建立新的 OAuth 憑證:

  • 前往 Google Cloud Credentials 頁面。確認您已在畫面頂端選取正確的專案。
  • 按一下「CREATE CREDENTIALS」,然後在下拉式選單中選擇「OAuth client ID」
  • 在下一個頁面中:
    • 將「應用程式類型」設為「網頁應用程式」
    • 按一下「已授權的重新導向 URI」下方的「新增 URI」。為應用程式回呼路徑新增完整路徑。例如 https://my.domain.com/auth-callbackhttps://localhost:5000/callback。稍後在本逐步操作說明中,您會建立及處理這個路徑。您隨時可以編輯或新增更多這類路線。
    • 點選「建立」。
  • 接著,您會收到對話方塊,其中包含新建立的憑證。選擇「Download JSON」選項。將下載的 JSON 檔案複製到伺服器目錄中。

特定程式語言的必備條件

如需最新的必備條件清單,請查看每個存放區中的 README 檔案。

Python

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

我們的 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/ 目錄包含「建立外掛程式」逐步操作說明的最終實作項目。

目錄內容

目錄內容會因實作語言而異:

Python

  • 目錄根目錄包含下列檔案:

    • 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__.pywebapp 模組的初始化工具。此初始化器會啟動 Flask 伺服器,並載入 config.py 中的設定選項集。

  • 特定逐步操作說明步驟所需的其他檔案。

Node.js

每個逐步操作步驟都會放在專屬的 <step> 子資料夾中。每個步驟都包含:

  • 靜態檔案 (例如 JavaScript、CSS 和圖片) 位於 ./<step>/public 資料夾中。
  • 您可以在 ./<step>/routes 資料夾中找到 Express 路由器。
  • HTML 範本位於 ./<step>/views 資料夾中。
  • 伺服器應用程式為 ./<step>/app.js

Java

專案目錄包含下列項目:

  • src.main 目錄包含成功執行應用程式所需的原始碼和設定。這個目錄包含下列項目: + java.com.addons.spring 目錄包含 Application.javaController.java 檔案。Application.java 檔案負責執行應用程式伺服器,而 Controller.java 檔案則負責處理端點邏輯。+ resources 目錄包含 templates 目錄,其中含有 HTML 和 JavaScript 檔案。它還包含 application.properties 檔案,可用於指定執行伺服器的連接埠、金鑰庫檔案的路徑,以及 templates 目錄的路徑。這個範例包括 resources 目錄中的 KeyStore 檔案。您可以將其儲存在任何偏好的位置,但請務必根據路徑更新 application.properties 檔案。
    • pom.xml 包含建構專案所需的資訊,並定義必要的依附元件。
    • .gitignore 包含不應上傳至 Git 的檔案名稱。請務必在此 .gitignore 中新增 KeyStore 路徑。在提供的範例中為 secrets/*.p12 (KeyStore 的用途會在下一節討論)。在第 2 個逐步操作說明和後續步驟中,您也應加入 client_secret.json 檔案的路徑,確保不會在遠端存放區中加入機密資料。針對第 3 個示範和之後的示範,您應新增 H2 資料庫檔案和檔案資料儲存庫工廠的路徑。如要進一步瞭解如何設定這些資料儲存庫,請參閱第三個處理重複造訪的操作說明。
    • mvnwmvnw.cmd 是 Unix 和 Windows 的 Maven 包裝函式執行檔。舉例來說,在 Unix 上執行 ./mvnw --version 會輸出 Apache Maven 版本和其他資訊。
    • .mvn 目錄包含 Maven 包裝函式的設定。

執行範例伺服器

您必須啟動伺服器才能進行測試。請按照以下操作說明,以所選語言執行範例伺服器:

Python

OAuth 憑證

請按照前述建立及下載 OAuth 憑證。將 JSON 檔案放在根目錄中,並與應用程式的伺服器啟動檔案並列。

設定伺服器

您可以透過多種方式執行網頁伺服器。在 Python 檔案結尾處新增下列任一項目:

  1. 不安全的 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)
    
  2. 確保 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)
    
  3. 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.pemsslcert/key.pem 的形式儲存在存放區根資料夾。您可能需要將這些金鑰加入 OS 鑰匙圈,才能讓瀏覽器接受這些金鑰。

請確保 *.pem 位於 .gitignore 檔案中,因為您不想將檔案提交至 Git。

啟動伺服器

您可以使用下列指令執行應用程式,並將 step01 替換為要以伺服器身分執行的正確步驟 (例如,01-basic-app 為 step01,02-sign-in 為 step02)。

npm run step01

npm run step02

這會在 https://localhost:5000 啟動網路伺服器。

你可以在終端機中使用 Control + C 終止伺服器。

Java

設定伺服器

如要透過 HTTPS 執行伺服器,您必須建立用於透過 HTTPS 執行應用程式的自行簽署憑證。

建議您使用 mkcert 進行本機開發。安裝 mkcert 後,下列指令會產生本機儲存的憑證,以便透過 HTTPS 執行。

mkcert -install
mkcert -pkcs12 -p12-file <path_to_keystore> <domain_name>

這個範例包括資源目錄中的 KeyStore 檔案。您可以將檔案儲存在任何位置,但請務必根據路徑更新 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 中指定的通訊埠啟動伺服器。