คำแนะนำแบบทีละขั้นนี้แสดงให้เห็นถึงการเคลื่อนไหวทั้งหมดในการทำงาน ส่วนเสริมของ Classroom ข้อมูลแต่ละขั้นตอนในคำแนะนำแบบทีละขั้นที่เจาะจง เพื่อนำแนวคิดไปใช้กับเว็บแอปพลิเคชันเดียว เป้าหมายคือการช่วยคุณ ในการตั้งค่า กำหนดค่า และเปิดใช้งานส่วนเสริมฟังก์ชันได้
ส่วนเสริมต้องโต้ตอบกับโปรเจ็กต์ Google Cloud หากไม่คุ้นเคยกับ Google Cloud เราขอแนะนำให้อ่านคู่มือเริ่มต้นใช้งาน คุณจัดการ ข้อมูลเข้าสู่ระบบ, การเข้าถึง API และ Google Workspace Marketplace SDK ใน คอนโซล Google Cloud ดูข้อมูลเพิ่มเติมเกี่ยวกับ Marketplace SDK โปรดไปที่ 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 เพิ่ม แบบเต็ม
เส้นทางสำหรับเส้นทาง Callback ของแอปพลิเคชันของคุณ ตัวอย่างเช่น
https://my.domain.com/auth-callback
หรือhttps://localhost:5000/callback
คุณสร้างและจัดการเส้นทางนี้ ในคำแนะนำแบบทีละขั้นนี้ คุณสามารถแก้ไขหรือเพิ่มเส้นทางดังกล่าวได้ทุกเมื่อ - คลิกสร้าง
- จากนั้นคุณจะได้รับกล่องโต้ตอบที่มีข้อมูลเข้าสู่ระบบที่สร้างขึ้นใหม่ เลือก ตัวเลือกดาวน์โหลด JSON คัดลอกไฟล์ JSON ที่ดาวน์โหลดไปยังเซิร์ฟเวอร์ ไดเรกทอรี
ข้อกำหนดเบื้องต้นเฉพาะภาษา
ดูไฟล์ README ในแต่ละที่เก็บเพื่อดูรายการล่าสุดสำหรับ ของ Google
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 เพื่อจัดการสร้างและจัดการได้ ทรัพยากร Dependency ตัวอย่างนี้มี Wrapper ของ 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__.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
มีข้อมูลที่จำเป็นในการสร้างโปรเจ็กต์และ กำหนดทรัพยากร Dependency ที่จำเป็น.gitignore
มีชื่อไฟล์ที่ไม่ควรอัปโหลดไปยัง Git ตรวจสอบว่าคุณเพิ่มเส้นทางไปยังคีย์สโตร์ใน.gitignore
นี้ ในตัวอย่างที่ระบุ นี่คือsecrets/*.p12
(วัตถุประสงค์ของ คีย์สโตร์จะมีการอธิบายในหัวข้อด้านล่าง) สำหรับคำแนะนำแบบทีละขั้น 2 และ นอกเหนือจากนั้น คุณยังควรระบุเส้นทางสู่client_secret.json
เพื่อให้แน่ใจว่าคุณไม่ได้ระบุ ข้อมูลลับในที่เก็บระยะไกล สำหรับคำแนะนำแบบทีละขั้น 3 ขึ้นไป คุณ ควรเพิ่มเส้นทางไปยังไฟล์ฐานข้อมูล H2 และพื้นที่เก็บข้อมูลไฟล์ โรงงาน ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าพื้นที่เก็บข้อมูลเหล่านี้ได้ คำแนะนำแบบทีละขั้นที่ 3 เกี่ยวกับการจัดการการเข้าชมซ้ำmvnw
และmvnw.cmd
เป็นไฟล์ปฏิบัติการ Wrapper ของ Maven สำหรับ Unix และ Windows ตามลำดับ ตัวอย่างเช่น การเรียกใช้./mvnw --version
บน Unix จะแสดงเวอร์ชัน Apache Maven รวมถึงข้อมูลอื่นๆ- ไดเรกทอรี
.mvn
มีการกำหนดค่าสำหรับ Maven Wrapper
เรียกใช้เซิร์ฟเวอร์ตัวอย่าง
คุณต้องเปิดเซิร์ฟเวอร์เพื่อทดสอบ ทำตามวิธีการเหล่านี้เพื่อ เรียกใช้เซิร์ฟเวอร์ตัวอย่างในภาษาที่คุณต้องการ:
Python
ข้อมูลเข้าสู่ระบบ OAuth
สร้างและดาวน์โหลดข้อมูลเข้าสู่ระบบ OAuth ตามที่อธิบายไว้ก่อนหน้านี้ สถานที่ ไฟล์ JSON ในไดเรกทอรีรากควบคู่ไปกับเซิร์ฟเวอร์ของแอปพลิเคชันของคุณ เปิดไฟล์
กำหนดค่าเซิร์ฟเวอร์
คุณมีตัวเลือกมากมายในการเรียกใช้เว็บเซิร์ฟเวอร์ ในตอนท้าย ไฟล์ Python ให้เพิ่มค่าใดค่าหนึ่งต่อไปนี้
localhost
ไม่ปลอดภัย โปรดทราบว่าวิธีนี้เหมาะสำหรับการทดสอบโดยตรง เฉพาะในหน้าต่างเบราว์เซอร์เท่านั้น โดเมนที่ไม่ปลอดภัยจะโหลดใน iframe ของส่วนเสริมของ Classroomif __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
คุณต้องระบุ Tuple ของไฟล์คีย์ 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
ในรูทของที่เก็บ
โฟลเดอร์ คุณอาจต้องเพิ่มคีย์เหล่านี้ไปยังคีย์เชนระบบปฏิบัติการเพื่อให้
เบราว์เซอร์ของคุณเพื่อยอมรับ
ตรวจสอบว่า *.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