ส่วนเสริมของ Classroom จะโหลดภายใน iframe เพื่อให้ผู้ใช้ปลายทางได้รับประสบการณ์ที่ราบรื่นและสะดวกสบาย iframe มี 4 ประเภทที่แตกต่างกัน โปรดดูหน้า iframe ในไดเรกทอรีเส้นทางของผู้ใช้เพื่อดูภาพรวมวัตถุประสงค์และลักษณะของ iframe แต่ละรายการ
หลักเกณฑ์ด้านความปลอดภัยของ iframe
พาร์ทเนอร์ควรปฏิบัติตามแนวทางปฏิบัติแนะนำของอุตสาหกรรมเพื่อรักษาความปลอดภัยของ iframe ทีมรักษาความปลอดภัยของเราแนะนําให้ทําดังนี้เพื่อปกป้อง iframe
ต้องระบุ HTTPS เราขอแนะนำให้ใช้ TLS 1.2 ขึ้นไปและเปิดใช้ความปลอดภัยที่เข้มงวดในการรับส่งข้อมูลแบบ HTTP โปรดดูบทความ MDN ที่เกี่ยวข้องกับ Strict Transport Security
เปิดใช้นโยบายรักษาความปลอดภัยเนื้อหาแบบเข้มงวด ดูบทความ OWASP นี้และบทความ MDN ของนโยบายรักษาความปลอดภัยเนื้อหาที่เกี่ยวข้อง
เปิดใช้แอตทริบิวต์คุกกี้ที่ปลอดภัย โปรดดูแอตทริบิวต์ HttpOnly และบทความ MDN เกี่ยวกับคุกกี้ที่เกี่ยวข้อง
การกำหนดค่า URI ของ iFrame
URI การตั้งค่าไฟล์แนบคือสิ่งที่ iframe การค้นหาไฟล์แนบจะโหลด และเป็นจุดที่ครูจะเริ่มขั้นตอนการสร้างไฟล์แนบของส่วนเสริมในโพสต์ Classroom ตั้งค่าได้ในคอนโซลโปรเจ็กต์ Google Cloud ตั้งค่า URI นี้ใน API และบริการของโปรเจ็กต์ Google Cloud > Google Workspace Marketplace SDK > หน้าการกำหนดค่าแอป
คำนำหน้า URI ไฟล์แนบที่อนุญาตใช้เพื่อตรวจสอบ URI ที่ตั้งค่าไว้ใน AddOnAttachment โดยใช้เมธอด *.addOnAttachments.create
และ
*.addOnAttachments.patch
การตรวจสอบความถูกต้องจะเป็นการจับคู่คำนำหน้าสตริงตามตัวอักษร และไม่อนุญาตให้ใช้ไวลด์การ์ดในขณะนี้
พารามิเตอร์การค้นหา
iframe จะส่งข้อมูลสำคัญไปยังส่วนเสริมเป็นพารามิเตอร์การค้นหา พารามิเตอร์มี 2 หมวดหมู่ ได้แก่ พารามิเตอร์ที่เกี่ยวข้องกับไฟล์แนบและพารามิเตอร์ที่เกี่ยวข้องกับการลงชื่อเข้าใช้
พารามิเตอร์ที่เกี่ยวข้องกับไฟล์แนบ
พารามิเตอร์ที่เกี่ยวข้องกับไฟล์แนบจะให้ข้อมูลเกี่ยวกับหลักสูตร งาน ไฟล์แนบของส่วนเสริม งานที่นักเรียนส่ง และโทเค็นการให้สิทธิ์
- รหัสหลักสูตร
ค่า
courseId
เป็นตัวระบุหลักสูตรรวมอยู่ใน iframe ทั้งหมด
- รหัสโพสต์ (เลิกใช้งานแล้ว)
ค่า
postId
คือตัวระบุของโพสต์ (ประกาศ งานในหลักสูตร หรือเนื้อหางานของหลักสูตร) ที่มีการแนบไฟล์แนบนี้รวมอยู่ใน iframe ทั้งหมด
- รหัสสินค้า
ค่า
itemId
เป็นตัวระบุของAnnouncement
,CourseWork
หรือCourseWorkMaterial
ที่มีการแนบไฟล์แนบนี้รวมอยู่ใน iframe ทั้งหมด
- ประเภทรายการ
ค่า
itemType
ระบุประเภททรัพยากรที่มีการแนบไฟล์แนบนี้ ค่าสตริงที่ส่งคือ"announcements"
,"courseWork"
หรือ"courseWorkMaterials"
รวมอยู่ใน iframe ทั้งหมด
- รหัสไฟล์แนบ
ค่า
attachmentId
เป็นตัวระบุของไฟล์แนบรวมอยู่ใน iframe
teacherViewUri
,studentViewUri
และstudentWorkReviewUri
- รหัสการส่ง
ค่า
submissionId
เป็นตัวระบุงานของนักเรียน แต่ควรใช้ร่วมกับattachmentId
เพื่อระบุงานของนักเรียนจากงานชิ้นหนึ่งๆซึ่งรวมอยู่ใน
studentWorkReviewUri
- โทเค็นส่วนเสริม
ค่า
addOnToken
เป็นโทเค็นการให้สิทธิ์ที่ใช้เรียกaddOnAttachments.create
เพื่อสร้างส่วนเสริมรวมอยู่ใน iframe Discovery ไฟล์แนบ และ iframe อัปเกรดลิงก์
- URL ที่จะอัปเกรด
การมีค่า
urlToUpgrade
หมายความว่าครูได้รวมไฟล์แนบลิงก์ไว้ในงาน และตกลงที่จะอัปเกรดเป็นไฟล์แนบของส่วนเสริม หากยังไม่ได้กำหนดค่าฟีเจอร์นี้ โปรดดูคู่มือเกี่ยวกับการอัปเกรดลิงก์สำหรับไฟล์แนบสำหรับรายละเอียดเพิ่มเติมรวมอยู่ใน iframe การอัปเกรดลิงก์
พารามิเตอร์ที่เกี่ยวข้องกับการลงชื่อเข้าใช้
พารามิเตอร์การค้นหา login_hint
จะให้ข้อมูลเกี่ยวกับผู้ใช้ Classroom ที่เข้าชมหน้าเว็บของส่วนเสริม พารามิเตอร์การค้นหานี้มีอยู่ใน URL src
ของ iframe ซึ่งจะส่งเมื่อผู้ใช้เคยใช้ส่วนเสริมของคุณมาก่อนเพื่อช่วยลดอุปสรรคในการลงชื่อเข้าใช้ของผู้ใช้ปลายทาง คุณจะต้องจัดการพารามิเตอร์
การค้นหานี้ในการใช้งานส่วนเสริม
- คำแนะนำในการเข้าสู่ระบบ
login_hint
เป็นตัวระบุที่ไม่ซ้ำกันสำหรับการตั้งค่า หลังจากที่ผู้ใช้เข้าสู่ระบบส่วนเสริมเป็นครั้งแรกแล้ว ระบบจะส่งพารามิเตอร์
login_hint
ต่อการเข้าชมส่วนเสริมของคุณแต่ละครั้งโดยผู้ใช้รายเดิมการใช้งานพารามิเตอร์
login_hint
อาจมี 2 ลักษณะ ได้แก่- ส่งค่า
login_hint
ระหว่างขั้นตอนการตรวจสอบสิทธิ์เพื่อให้ผู้ใช้ไม่ต้องป้อนข้อมูลเข้าสู่ระบบเมื่อกล่องโต้ตอบการลงชื่อเข้าใช้ปรากฏขึ้น ผู้ใช้ไม่ได้ลงชื่อเข้าใช้โดยอัตโนมัติ - หลังจากที่ผู้ใช้ลงชื่อเข้าใช้แล้ว ให้ใช้พารามิเตอร์นี้เพื่อเปรียบเทียบค่ากับผู้ใช้ที่คุณอาจลงชื่อเข้าใช้ส่วนเสริมอยู่แล้ว หากพบข้อมูลที่ตรงกัน คุณสามารถปล่อยให้ผู้ใช้ลงชื่อเข้าใช้ต่อไปและเลี่ยงการแสดงขั้นตอนการลงชื่อเข้าใช้ หากพารามิเตอร์ไม่ตรงกับผู้ใช้ที่ลงชื่อเข้าใช้ ให้แจ้งให้ผู้ใช้ลงชื่อเข้าใช้ด้วยปุ่มลงชื่อเข้าใช้ที่เป็นแบรนด์ของ Google
รวมอยู่ใน iframe ทั้งหมด
- ส่งค่า
iframe การค้นหาไฟล์แนบ
มิติข้อมูล | คำอธิบาย |
---|---|
จำเป็น | ใช่ |
URI | ระบุไว้ในข้อมูลเมตาของส่วนเสริม |
พารามิเตอร์การค้นหา | courseId , postId (เลิกใช้งานแล้ว), itemId , itemType ,
addOnToken และ login_hint |
ส่วนสูง | ความสูงของหน้าต่าง 80% ลบด้วย 60 พิกเซลสำหรับส่วนหัวด้านบน |
ความกว้าง | สูงสุด 1600px ความกว้างของหน้าต่าง 90% เมื่อหน้าต่าง <= 600px กว้าง ความกว้างของหน้าต่าง 80% เมื่อหน้าต่าง > กว้าง 600px |
ตัวอย่างสถานการณ์การค้นพบไฟล์แนบ
- ส่วนเสริมของ Classroom ได้รับการลงทะเบียนใน Google Workspace Marketplace ด้วย URI การสำรวจไฟล์แนบเป็น
https://example.com/addon
- ครูติดตั้งส่วนเสริมนี้และสร้างประกาศ งาน หรือสื่อการเรียนการสอนของชั้นเรียนรายการใหม่ในหลักสูตรหนึ่ง ตัวอย่างเช่น
itemId=234
,itemType=courseWork
และcourseId=123
- ขณะกำหนดค่ารายการนั้น ครูจะเลือกส่วนเสริมที่ติดตั้งใหม่เป็นไฟล์แนบ
- Classroom จะสร้าง iframe ที่มีการตั้งค่า src URL เป็น
https://example.com/addon?courseId=123&itemId=234&itemType=courseWork&addOnToken=456
- ครูทำงานภายใน iframe เพื่อเลือกไฟล์แนบ
- ในการเลือกไฟล์แนบ ส่วนเสริมจะส่ง
postMessage
ไปยัง Classroom เพื่อปิด iframe
iframe ของครูViewUri และนักเรียนViewUri
มิติข้อมูล | คำอธิบาย |
---|---|
จำเป็น | ใช่ |
URI | teacherViewUri หรือ studentViewUri |
พารามิเตอร์การค้นหา | courseId , postId (เลิกใช้งานแล้ว), itemId , itemType ,
attachmentId และ login_hint |
ส่วนสูง | ความสูงของหน้าต่าง 100% ลบด้วย 140 พิกเซลสำหรับส่วนหัวด้านบน |
ความกว้าง | ความกว้างของหน้าต่าง 100% |
iframe ของStudentWorkReviewUri
มิติข้อมูล | คำอธิบาย |
---|---|
จำเป็น | ไม่ (ตรวจสอบว่านี่เป็นไฟล์แนบประเภทกิจกรรมหรือไม่) |
URI | studentWorkReviewUri |
พารามิเตอร์การค้นหา | courseId , postId (เลิกใช้งานแล้ว), itemId , itemType ,
attachmentId , submissionId และ login_hint |
ส่วนสูง | ความสูงของหน้าต่าง 100% ลบด้วย 168px สำหรับส่วนหัวด้านบน |
ความกว้าง | ความกว้างหน้าต่าง 100% ลบด้วยความกว้างของแถบด้านข้าง<> แถบด้านข้างคือ 312 พิกเซล เมื่อขยายและ 56 พิกเซลเมื่อยุบ |
iframe การอัปเกรดลิงก์
มิติข้อมูล | คำอธิบาย |
---|---|
จำเป็น | ได้ หากส่วนเสริมรองรับการอัปเกรดลิงก์ไปยังไฟล์แนบของส่วนเสริม |
URI | ระบุไว้ในข้อมูลเมตาของส่วนเสริม |
พารามิเตอร์การค้นหา | courseId , postId (เลิกใช้งานแล้ว), itemId , itemType ,
addOnToken , urlToUpgrade และ login_hint |
ส่วนสูง | ความสูงของหน้าต่าง 80% ลบด้วย 60 พิกเซลสำหรับส่วนหัวด้านบน |
ความกว้าง | สูงสุด 1600px ความกว้างของหน้าต่าง 90% เมื่อหน้าต่าง <= 600px กว้าง ความกว้างของหน้าต่าง 80% เมื่อหน้าต่าง > กว้าง 600px |
ตัวอย่างสถานการณ์การอัปเกรดลิงก์
- ส่วนเสริมของ Classroom ลงทะเบียนด้วย URI การอัปเกรดลิงก์ของ
https://example.com/upgrade
คุณได้ระบุรูปแบบคำนำหน้าของโฮสต์และเส้นทางต่อไปนี้สำหรับไฟล์แนบของลิงก์ที่ Classroom ควรลองอัปเกรดเป็นไฟล์แนบของส่วนเสริม- โฮสต์คือ
example.com
และคำนำหน้าเส้นทางคือ/quiz
- โฮสต์คือ
- ครูสร้างประกาศ งาน หรือสื่อการเรียนการสอนใหม่ของชั้นเรียน ตัวอย่างเช่น
itemId=234
,itemType=courseWork
และcourseId=123
- ครูวางลิงก์
https://example.com/quiz/5678
ในกล่องโต้ตอบไฟล์แนบของลิงก์ที่ตรงกับรูปแบบ URL ที่คุณระบุไว้ จากนั้นครูจะได้รับข้อความแจ้งให้อัปเกรดลิงก์เป็นไฟล์แนบของส่วนเสริม Classroom จะเปิด iframe การอัปเกรดลิงก์ที่ตั้งค่า URL เป็น
https://example.com/upgrade?courseId=123&postId=234&addOnToken=456&urlToUpgrade=https%3A%2F%2Fexample.com%2Fquiz%2F5678
คุณประเมินพารามิเตอร์การค้นหาที่ส่งผ่านใน iframe และเรียกไปยังปลายทาง
CreateAddOnAttachment
โปรดทราบว่าพารามิเตอร์การค้นหาurlToUpgrade
คือ URI ที่เข้ารหัสเมื่อส่งใน iframe คุณต้องถอดรหัสพารามิเตอร์ เพื่อให้ได้มาในรูปแบบเดิม ตัวอย่างเช่น JavaScript มีฟังก์ชันdecodeURIComponent()
เมื่อสร้างไฟล์แนบของส่วนเสริมจากลิงก์สำเร็จแล้ว ให้ส่ง
postMessage
ไปยัง Classroom เพื่อปิด iframe
ปิด iframe
ระบบอาจปิด iframe จากเครื่องมือการเรียนรู้โดยการส่ง postMessage
ที่มีเพย์โหลด {type: 'Classroom', action: 'closeIframe'}
Classroom ยอมรับเฉพาะ postMessage
นี้จาก host_name+port ที่สอดคล้องกับ URI เดิมที่เปิดไว้
<button id="close">Send message to close iframe</button>
<script>
document.querySelector('#close')
.addEventListener('click', () => {
window.parent.postMessage({
type: 'Classroom',
action: 'closeIframe',
}, '*');
});
</script>
ปิด iframe จาก iframe
โดเมน+พอร์ตของหน้าที่ส่งเหตุการณ์ postMessage
ต้องมีโดเมน+พอร์ตเดียวกับ URI ที่ใช้ในการเปิด iframe ไม่เช่นนั้นระบบจะไม่สนใจข้อความดังกล่าว วิธีแก้ปัญหาคือการเปลี่ยนเส้นทางกลับไปยังหน้าในโดเมนเดิมที่ไม่ทำอะไรมากไปกว่าการส่งเหตุการณ์ postMessage
ปิด iframe จากแท็บใหม่
การป้องกันผลแบบข้ามโดเมนทำให้การดำเนินการนี้ไม่ทำงาน วิธีแก้ปัญหาเบื้องต้นคือให้จัดการการสื่อสารระหว่าง iframe กับแท็บใหม่ด้วยตนเอง และปล่อยให้ iframe รับผิดชอบการออกเหตุการณ์ postMessage
ปิดในที่สุด โปรดทราบว่าเรากำลังนำไฮเปอร์ลิงก์ "เปิดในชื่อพาร์ทเนอร์" ออกเพื่อให้ผู้ใช้ไม่สร้างแท็บด้วยวิธีนี้ในอนาคตอันใกล้
ข้อจำกัด
iframe ทั้งหมดจะเปิดด้วยแอตทริบิวต์แซนด์บ็อกซ์ต่อไปนี้
allow-popups
allow-popups-to-escape-sandbox
allow-forms
allow-scripts
allow-storage-access-by-user-activation
allow-same-origin
และนโยบายฟีเจอร์ต่อไปนี้
allow="microphone *"
การบล็อกคุกกี้ของบุคคลที่สาม
โปรดทราบว่าการบล็อกคุกกี้ของบุคคลที่สามทำให้ดูแลเซสชันที่ลงชื่อเข้าใช้ใน iframe ได้ยาก โปรดดูที่ https://www.cookiestatus.com เกี่ยวกับสถานะปัจจุบันของการบล็อกคุกกี้ในเบราว์เซอร์ต่างๆ แน่นอนว่าปัญหานี้ไม่ได้เกิดขึ้นกับส่วนเสริมของ Google Classroom โดยเฉพาะ และส่งผลต่อทุกเว็บไซต์ที่บุคคลที่สามของ iframe พาร์ทเนอร์ของเราหลายรายพบปัญหานี้
ตัวอย่างวิธีแก้ปัญหาทั่วไปมีดังนี้
- เปิดแท็บใหม่เพื่อสร้างคุกกี้ในบริบทของบุคคลที่หนึ่ง บางเบราว์เซอร์จะให้สิทธิ์เข้าถึงคุกกี้ที่สร้างขึ้นในบริบทของบุคคลที่หนึ่งขณะที่อยู่ในบริบทของบุคคลที่สาม
- ขอให้ผู้ใช้อนุญาตคุกกี้ของบุคคลที่สาม ซึ่งการดำเนินการนี้อาจไม่สามารถทำได้ กับผู้ใช้ทุกคนเสมอไป
- ออกแบบเว็บแอปพลิเคชันแบบหน้าเดียวที่ไม่ต้องอาศัยคุกกี้
คาดว่าจะมีข้อจำกัดคุกกี้มากขึ้นในเบราว์เซอร์เวอร์ชันต่อๆ ไป สร้างคำขอฟีเจอร์เพื่อส่งความคิดเห็นถึง Google เกี่ยวกับวิธีลดการเพิ่มที่พาร์ทเนอร์กำหนด
เปิดใช้การค้นพบได้ของส่วนเสริมโดยใช้นิพจน์ทั่วไปของ URL
ครูมักจะสร้างงานด้วยไฟล์แนบลิงก์ หากต้องการโปรโมตการใช้ส่วนเสริม ให้ระบุนิพจน์ทั่วไปที่ตรงกับ URL ของทรัพยากรที่คุณเข้าถึงได้ในส่วนเสริม ครูแนบลิงก์ที่ตรงกับนิพจน์ทั่วไปของคุณจะเห็นกล่องโต้ตอบแบบปิดได้ซึ่งกระตุ้นให้ลองใช้ส่วนเสริมของคุณ ผู้ใช้จะเห็นกล่องโต้ตอบก็ต่อเมื่อได้ติดตั้งส่วนเสริมให้กับบัญชีแล้ว
หากต้องการแสดงพฤติกรรมเช่นนี้ต่อครู ให้ระบุนิพจน์ทั่วไปที่เหมาะสมให้กับรายชื่อติดต่อใน Google หากนิพจน์ทั่วไปที่คุณระบุกว้างเกินไปหรือขัดแย้งกับส่วนเสริมอื่นอาจถูกแก้ไขให้ถูกจำกัดหรือแตกต่างกันมากขึ้น
รูปที่ 1 ครูเลือกไฟล์แนบ กับงานใหม่
รูปที่ 2 ครูวางลิงก์จากแหล่งที่มาของบุคคลที่สาม ครูได้ติดตั้งส่วนเสริมของ Classroom ของบุคคลที่สามไว้แล้ว
รูปที่ 3 กล่องโต้ตอบแบบอินเทอร์แอกทีฟที่แสดงต่อครูเมื่อลิงก์ที่วางตรงกับนิพจน์ทั่วไปที่นักพัฒนาซอฟต์แวร์บุคคลที่สามระบุไว้
หากครูเลือก "ลองใช้เลย" ในป๊อปอัปตามที่เห็นในรูปที่ 3 ระบบจะเปลี่ยนเส้นทางไปยัง iframe การค้นพบไฟล์แนบของส่วนเสริม