บทแนะนำชุดนี้จะแสดงภาพรวมของส่วนต่างๆ ของส่วนเสริม Classroom ที่ใช้งานได้ แต่ละขั้นตอนของบทแนะนำจะอธิบายแนวคิดที่เฉพาะเจาะจงและนำไปใช้ในเว็บแอปพลิเคชันเดียว โดยมีเป้าหมายเพื่อช่วยคุณในการตั้งค่า กำหนดค่า และเปิดใช้งานส่วนเสริมที่ใช้งานได้
ส่วนเสริมต้องโต้ตอบกับโปรเจ็กต์ Google Cloud หากคุณไม่คุ้นเคยกับ Google Cloud เราขอแนะนำให้อ่านคำแนะนำในการเริ่มต้นใช้งาน คุณจัดการข้อมูลเข้าสู่ระบบ การเข้าถึง API และ SDK ของ Google Workspace Marketplace ในคอนโซล Google Cloud ดูข้อมูลเพิ่มเติมเกี่ยวกับ SDK ของ Marketplace ได้ที่หน้าคู่มือข้อมูลผลิตภัณฑ์ใน Google Workspace Marketplace
คู่มือนี้ครอบคลุมหัวข้อต่อไปนี้
- ใช้ Google Cloud เพื่อสร้างหน้าเว็บที่จะแสดงใน iframe ใน Classroom
- เพิ่มการลงชื่อเพียงครั้งเดียว (SSO) ของ Google และอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้
- เรียก 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 ในบทแนะนำแรกจะอธิบายขั้นตอนการกำหนดค่าที่เฉพาะเจาะจงด้วย
เมื่อเสร็จแล้ว ให้ดาวน์โหลดรหัสไคลเอ็นต์ OAuth 2.0 เป็นไฟล์ JSON โดยคุณต้องเพิ่มไฟล์ข้อมูลเข้าสู่ระบบนี้ลงในไดเรกทอรีตัวอย่างที่แตกไฟล์แล้ว ดูสถานที่ที่เจาะจงได้ที่ทำความเข้าใจไฟล์
ข้อมูลเข้าสู่ระบบ OAuth
ทําตามขั้นตอนต่อไปนี้เพื่อสร้างข้อมูลเข้าสู่ระบบ OAuth ใหม่
- ไปที่หน้าข้อมูลเข้าสู่ระบบ Google Cloud ตรวจสอบว่าคุณได้เลือกโปรเจ็กต์ที่ถูกต้องที่ด้านบนของหน้าจอแล้ว
- คลิกสร้างข้อมูลเข้าสู่ระบบ แล้วเลือกรหัสไคลเอ็นต์ OAuth จากเมนูแบบเลื่อนลง
- ในหน้าถัดไป ให้ทำดังนี้
- ตั้งค่าประเภทแอปพลิเคชันเป็นเว็บแอปพลิเคชัน
- ในส่วน URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต ให้คลิกเพิ่ม URI เพิ่ม full
path สำหรับเส้นทางการเรียกกลับของแอปพลิเคชัน เช่น
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-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 v16.13 ขึ้นไป
ติดตั้งโมดูลโหนดที่จําเป็นโดยใช้ npm
npm install
Java
ตัวอย่าง Java ใช้เฟรมเวิร์ก Spring Boot คุณสามารถดาวน์โหลดซอร์สโค้ดที่สมบูรณ์ได้จากลิงก์ที่ระบุ
ติดตั้ง Java 11 ขึ้นไป หากยังไม่ได้ติดตั้งในเครื่อง
แอปพลิเคชัน Spring Boot สามารถใช้ Gradle หรือ Maven เพื่อจัดการบิลด์และจัดการข้อกําหนด ตัวอย่างนี้ประกอบด้วย Maven Wrapper ที่ช่วยให้คุณสร้างโปรเจ็กต์ได้สําเร็จโดยไม่ต้องติดตั้ง 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__.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
นี้แล้ว ในตัวอย่างนี้คือsecrets/*.p12
(เราจะพูดถึงวัตถุประสงค์ของคีย์สโตร์ในส่วนด้านล่าง) สำหรับบทแนะนำที่ 2 ขึ้นไป คุณควรระบุเส้นทางไปยังไฟล์client_secret.json
ด้วยเพื่อให้แน่ใจว่าไม่ได้รวมข้อมูลลับไว้ในที่เก็บข้อมูลระยะไกล สำหรับบทแนะนำที่ 3 ขึ้นไป คุณควรเพิ่มเส้นทางไปยังไฟล์ฐานข้อมูล H2 และ File DataStore Factory ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าที่เก็บข้อมูลเหล่านี้ได้ในบทแนะนำที่ 3 เกี่ยวกับการจัดการการเข้าชมซ้ำmvnw
และmvnw.cmd
คือไฟล์ปฏิบัติการของ Maven Wrapper สำหรับ Unix และ Windows ตามลำดับ เช่น การรัน./mvnw --version
ใน Unix จะแสดงผลเวอร์ชัน Apache Maven และข้อมูลอื่นๆ- ไดเรกทอรี
.mvn
มีการกำหนดค่าสำหรับ Maven Wrapper
เรียกใช้เซิร์ฟเวอร์ตัวอย่าง
คุณต้องเปิดเซิร์ฟเวอร์เพื่อทดสอบ ทําตามวิธีการต่อไปนี้เพื่อเรียกใช้เซิร์ฟเวอร์ตัวอย่างในภาษาที่ต้องการ
Python
ข้อมูลเข้าสู่ระบบ OAuth
สร้างและดาวน์โหลดข้อมูลเข้าสู่ระบบ OAuth ตามที่อธิบายไว้ก่อนหน้านี้ วางไฟล์ JSON ในไดเรกทอรีรูทข้างไฟล์เปิดใช้งานเซิร์ฟเวอร์ของแอปพลิเคชัน
กําหนดค่าเซิร์ฟเวอร์
คุณมีตัวเลือกหลายวิธีในการเรียกใช้เว็บเซิร์ฟเวอร์ เพิ่มรายการใดรายการหนึ่งต่อไปนี้ที่ส่วนท้ายของไฟล์ Python
localhost
ที่ไม่ปลอดภัย โปรดทราบว่าวิธีนี้เหมาะสำหรับการทดสอบในหน้าต่างเบราว์เซอร์โดยตรงเท่านั้น ระบบจะโหลดโดเมนที่ไม่ปลอดภัยใน iframe ของส่วนเสริม Classroom ไม่ได้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)
เซิร์ฟเวอร์ 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
คลิก URL ที่ปรากฏขึ้นเพื่อดูเว็บแอปในเบราว์เซอร์เพื่อยืนยันว่าเว็บแอปทํางานได้อย่างถูกต้อง
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 -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