Classroom ऐड-ऑन को iframe में लोड किया जाता है, ताकि उपयोगकर्ता को आसानी से और बेहतर तरीके से इस्तेमाल करने का अनुभव मिल सके. पांच अलग-अलग तरह के iframe होते हैं. हर iframe के मकसद और उसके दिखने के तरीके के बारे में खास जानकारी पाने के लिए, उपयोगकर्ता के सफ़र की डायरेक्ट्री में iframe पेज देखें.
iframe की सुरक्षा से जुड़े दिशा-निर्देश
डेवलपर से यह उम्मीद की जाती है कि वे अपने iframe को सुरक्षित रखने के लिए, इंडस्ट्री के सबसे सही तरीकों का पालन करें. हालांकि, आपको अपने उपयोगकर्ता फ़्लो में कुछ एपीआई इंटरैक्शन भी शामिल करने चाहिए. इससे यह पुष्टि की जा सकेगी कि आपके पास मान्य क्रेडेंशियल हैं और आपके पास कोर्स में उपयोगकर्ता की भूमिका की सही पहचान करने की क्षमता है.
सर्वर ऐप्लिकेशन का कॉन्फ़िगरेशन
आईफ़्रेम को सुरक्षित रखने के लिए, हम सर्वर के इन कॉन्फ़िगरेशन का सुझाव देते हैं:
- एचटीटीपीएस ज़रूरी है. हमारा सुझाव है कि टीएलएस 1.2 या इससे ज़्यादा वर्शन का इस्तेमाल करें. साथ ही, एचटीटीपी स्ट्रिक्ट ट्रांसपोर्ट सिक्योरिटी (एचएसटीएस) को चालू करें. स्ट्रिक्ट ट्रांसपोर्ट सिक्योरिटी के बारे में, MDN का यह लेख पढ़ें.
- कॉन्टेंट की सुरक्षा के लिए सख्त नीति (स्ट्रिक्ट सीएसपी) चालू करें. यह OWASP लेख और इससे जुड़ा यह कॉन्टेंट की सुरक्षा के लिए नीति (सीएसपी) से जुड़ा MDN लेख पढ़ें.
- Secure कुकी एट्रिब्यूट को चालू करें. HttpOnly एट्रिब्यूट और इससे जुड़ा Cookies MDN लेख पढ़ें.
क्वेरी पैरामीटर
आईफ़्रेम, ऐड-ऑन को क्वेरी पैरामीटर के तौर पर ज़रूरी जानकारी भेजते हैं. पैरामीटर दो कैटगरी में बांटे गए हैं: अटैचमेंट से जुड़े पैरामीटर और साइन-इन से जुड़े पैरामीटर.
अटैचमेंट से जुड़े पैरामीटर
अटैचमेंट से जुड़े पैरामीटर, ऐड-ऑन को कोर्स, असाइनमेंट, ऐड-ऑन अटैचमेंट, छात्र या छात्रा के सबमिशन, और अनुमति देने वाले टोकन के बारे में जानकारी देते हैं.
- कोर्स आईडी
courseId
वैल्यू, कोर्स का आइडेंटिफ़ायर होती है.यह सभी iframe के साथ शामिल होता है.
- आइटम का आईडी
itemId
वैल्यू,Announcement
,CourseWork
याCourseWorkMaterial
का आइडेंटिफ़ायर होती है. यह अटैचमेंट, इन्हीं में से किसी एक पर अटैच होता है.यह सभी iframe के साथ शामिल होता है.
- आइटम का प्रकार
itemType
वैल्यू से उस संसाधन के टाइप की पहचान होती है जिस पर यह अटैचमेंट अटैच किया गया है. पास की गई स्ट्रिंग वैल्यू,"announcements"
,"courseWork"
या"courseWorkMaterials"
में से कोई एक है.यह सभी iframe के साथ शामिल होता है.
- अटैचमेंट आईडी
attachmentId
वैल्यू, अटैचमेंट का आइडेंटिफ़ायर होती है.teacherViewUri
,studentViewUri
, औरstudentWorkReviewUri
iframe के साथ शामिल किया गया है.- सबमिशन आईडी
submissionId
वैल्यू, छात्र-छात्रा के काम की पहचान करने वाला आइडेंटिफ़ायर है. हालांकि, इसका इस्तेमालattachmentId
के साथ किया जाना चाहिए, ताकि किसी असाइनमेंट के छात्र-छात्रा के काम की पहचान की जा सके.studentWorkReviewUri
के साथ शामिल है.
- ऐड-ऑन टोकन
addOnToken
वैल्यू, अनुमति देने वाला टोकन है. इसका इस्तेमाल ऐड-ऑन बनाने के लिए,addOnAttachments.create
कॉल करने के लिए किया जाता है.अटैचमेंट डिस्कवरी iframe और लिंक अपग्रेड iframe के साथ शामिल है.
- अपग्रेड करने के लिए यूआरएल
urlToUpgrade
वैल्यू का मतलब है कि शिक्षक ने असाइनमेंट में लिंक अटैचमेंट शामिल किया है. साथ ही, इसे ऐड-ऑन अटैचमेंट में अपग्रेड करने के लिए सहमति दी है. अगर आपने पहले से यह सुविधा कॉन्फ़िगर नहीं की है, तो ज़्यादा जानकारी के लिए, ऐड-ऑन अटैचमेंट जोड़ने के लिए लिंक अपग्रेड करने के बारे में गाइड देखें.लिंक अपग्रेड करने वाले iframe के साथ शामिल है.
साइन-इन से जुड़े पैरामीटर
login_hint
क्वेरी पैरामीटर, ऐड-ऑन के वेब पेज पर आने वाले Classroom उपयोगकर्ता के बारे में जानकारी देता है. यह क्वेरी पैरामीटर, iframe src
यूआरएल पर दिया जाता है. यह कुकी तब भेजी जाती है, जब उपयोगकर्ता ने पहले आपके ऐड-ऑन का इस्तेमाल किया हो. इससे, उपयोगकर्ता को साइन-इन करने में होने वाली परेशानी कम करने में मदद मिलती है. आपको अपने ऐड-ऑन में इस क्वेरी पैरामीटर को हैंडल करना होगा.
- लॉगिन का संकेत
login_hint
, उपयोगकर्ता के Google खाते का यूनीक आइडेंटिफ़ायर है. जब कोई उपयोगकर्ता पहली बार आपके ऐड-ऑन में लॉग इन करता है, तो इसके बाद जब भी वह ऐड-ऑन पर आता है, तोlogin_hint
पैरामीटर पास किया जाता है.login_hint
पैरामीटर का इस्तेमाल दो तरीकों से किया जा सकता है:- पुष्टि करने के फ़्लो के दौरान
login_hint
वैल्यू पास करें, ताकि साइन-इन डायलॉग बॉक्स दिखने पर उपयोगकर्ता को अपने क्रेडेंशियल न डालने पड़ें. उपयोगकर्ता अपने-आप साइन-इन नहीं होता. - जब उपयोगकर्ता साइन इन कर लेता है, तब इस पैरामीटर का इस्तेमाल करके, उस उपयोगकर्ता की वैल्यू की तुलना उन उपयोगकर्ताओं से करें जिन्होंने ऐड-ऑन में पहले से साइन इन किया हुआ है. अगर आपको कोई मैच मिलता है, तो उपयोगकर्ता को साइन-इन रहने दें और उसे साइन-इन करने का तरीका न दिखाएं. अगर पैरामीटर, साइन इन किए हुए किसी भी उपयोगकर्ता से मेल नहीं खाता है, तो उपयोगकर्ता को Google के ब्रैंड वाले साइन-इन बटन से साइन इन करने के लिए कहें.
यह सभी iframe के साथ शामिल होता है.
- पुष्टि करने के फ़्लो के दौरान
अटैचमेंट डिस्कवरी iframe
डाइमेंशन | ब्यौरा |
---|---|
ज़रूरी है | हां |
यूआरआई | ऐड-ऑन के मेटाडेटा में दिया गया |
क्वेरी पैरामीटर | courseId , itemId , itemType ,
addOnToken , और login_hint . |
ऊंचाई | विंडो की ऊंचाई का 80% हिस्सा, जिसमें से टॉप हेडर के लिए 60 पिक्सल घटा दिए गए हैं |
चौड़ाई | ज़्यादा से ज़्यादा 1600 पिक्सल विंडो की चौड़ाई का 90%, जब विंडो की चौड़ाई 600 पिक्सल से कम या उसके बराबर हो विंडो की चौड़ाई का 80%, जब विंडो की चौड़ाई 600 पिक्सल से ज़्यादा हो |
अटैचमेंट डिस्कवरी के उदाहरण
- Classroom ऐड-ऑन, Google Workspace Marketplace में रजिस्टर किया गया हो. साथ ही, अटैचमेंट डिस्कवरी यूआरआई
https://example.com/addon
हो. - कोई शिक्षक इस ऐड-ऑन को इंस्टॉल करता है और अपने किसी कोर्स में नई सूचना, असाइनमेंट या कॉन्टेंट बनाता है. उदाहरण के लिए,
itemId=234
,itemType=courseWork
औरcourseId=123
. - उस आइटम को कॉन्फ़िगर करते समय, शिक्षक अटैचमेंट के तौर पर, हाल ही में इंस्टॉल किए गए ऐड-ऑन को चुनता है.
- Classroom, src यूआरएल को
https://example.com/addon?courseId=123&itemId=234&itemType=courseWork&addOnToken=456
पर सेट करके एक iframe बनाता है.- टीचर, अटैचमेंट चुनने के लिए iframe में काम करता है.
- अटैचमेंट चुनने पर, ऐड-ऑन iframe को बंद करने के लिए, Classroom को
postMessage
भेजता है.
teacherViewUri और studentViewUri iframe
डाइमेंशन | ब्यौरा |
---|---|
ज़रूरी है | हां |
यूआरआई | teacherViewUri या studentViewUri |
क्वेरी पैरामीटर | courseId , itemId , itemType ,
attachmentId , और login_hint . |
ऊंचाई | विंडो की पूरी ऊंचाई में से, सबसे ऊपर मौजूद हेडर के लिए 140 पिक्सल घटाकर |
चौड़ाई | विंडो की चौड़ाई का 100% |
studentWorkReviewUri iframe
डाइमेंशन | ब्यौरा |
---|---|
ज़रूरी है | नहीं (इससे यह तय होता है कि यह गतिविधि के टाइप का अटैचमेंट है या नहीं) |
यूआरआई | studentWorkReviewUri |
क्वेरी पैरामीटर | courseId , itemId , itemType ,
attachmentId , submissionId , और login_hint . |
ऊंचाई | विंडो की पूरी ऊंचाई में से, सबसे ऊपर मौजूद हेडर के लिए 168 पिक्सल घटा दिए जाते हैं |
चौड़ाई | विंडो की पूरी चौड़ाई में से साइडबार की चौड़ाई घटाकर<> साइडबार को बड़ा करने पर उसकी चौड़ाई 312 पिक्सल होती है और छोटा करने पर 56 पिक्सल होती है |
लिंक अपग्रेड करने वाला iframe
डाइमेंशन | ब्यौरा |
---|---|
ज़रूरी है | हां, अगर आपका ऐड-ऑन, लिंक को ऐड-ऑन अटैचमेंट में अपग्रेड करने की सुविधा के साथ काम करता है. |
यूआरआई | ऐड-ऑन के मेटाडेटा में दिया गया |
क्वेरी पैरामीटर | courseId , itemId , itemType ,
addOnToken , urlToUpgrade , और login_hint . |
ऊंचाई | विंडो की ऊंचाई का 80% हिस्सा, जिसमें से टॉप हेडर के लिए 60 पिक्सल घटा दिए गए हैं |
चौड़ाई | ज़्यादा से ज़्यादा 1600 पिक्सल विंडो की चौड़ाई का 90%, जब विंडो की चौड़ाई 600 पिक्सल से कम या उसके बराबर हो विंडो की चौड़ाई का 80%, जब विंडो की चौड़ाई 600 पिक्सल से ज़्यादा हो |
लिंक अपग्रेड करने के उदाहरण
- Classroom ऐड-ऑन, लिंक अपग्रेड यूआरआई
https://example.com/upgrade
के साथ रजिस्टर किया गया है. आपने लिंक अटैचमेंट के लिए, होस्ट और पाथ के प्रीफ़िक्स पैटर्न दिए हैं. Classroom को इन्हें ऐड-ऑन अटैचमेंट में अपग्रेड करने की कोशिश करनी चाहिए:- होस्ट
example.com
है और पाथ प्रीफ़िक्स/quiz
है.
- होस्ट
- किसी शिक्षक ने अपने किसी कोर्स में नई सूचना, असाइनमेंट या कॉन्टेंट बनाया है. उदाहरण के लिए,
itemId=234
,itemType=courseWork
, औरcourseId=123
. - शिक्षक ने लिंक अटैचमेंट डायलॉग में,
https://example.com/quiz/5678
लिंक चिपकाया है. यह लिंक, आपके दिए गए यूआरएल पैटर्न से मेल खाता है. इसके बाद, शिक्षक को लिंक को ऐड-ऑन अटैचमेंट में अपग्रेड करने के लिए कहा जाता है. Classroom, लिंक अपग्रेड करने वाला iframe लॉन्च करता है. इसका यूआरएल
https://example.com/upgrade?courseId=123&itemId=234&itemType=courseWork&addOnToken=456&urlToUpgrade=https%3A%2F%2Fexample.com%2Fquiz%2F5678
पर सेट होता है.आईफ़्रेम पर पास किए गए क्वेरी पैरामीटर का आकलन करें और
CreateAddOnAttachment
एंडपॉइंट को कॉल करें. ध्यान दें कि iframe पर पास किए जाने पर,urlToUpgrade
क्वेरी पैरामीटर को यूआरआई में कोड में बदला जाता है. इस पैरामीटर को इसके ओरिजनल फ़ॉर्म में पाने के लिए, आपको इसे डिकोड करना होगा. उदाहरण के लिए, JavaScript मेंdecodeURIComponent()
फ़ंक्शन उपलब्ध है.लिंक से ऐड-ऑन अटैचमेंट बनाने के बाद, iframe को बंद करने के लिए Classroom को
postMessage
भेजें.
iframe बंद करें
लर्निंग टूल से iframe को बंद किया जा सकता है. इसके लिए, पेलोड {type: 'Classroom', action: 'closeIframe'}
के साथ postMessage
भेजा जाता है.
Classroom सिर्फ़ उस postMessage
को स्वीकार करता है जो host_name+port से मिला हो. यह host_name+port, उस ओरिजनल यूआरआई से जुड़ा होना चाहिए जिसे खोला गया था.
<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
इवेंट भेजने वाले पेज का डोमेन+पोर्ट, iframe लॉन्च करने के लिए इस्तेमाल किए गए यूआरआई के डोमेन+पोर्ट के जैसा होना चाहिए. ऐसा न होने पर, मैसेज को अनदेखा कर दिया जाता है. इसके लिए, उपयोगकर्ताओं को ओरिजनल डोमेन के उस पेज पर रीडायरेक्ट किया जा सकता है जो सिर्फ़ postMessage
इवेंट भेजता है.
नए टैब से iframe बंद करना
क्रॉस-डोमेन सुरक्षा की वजह से, यह सुविधा काम नहीं करती. इसके लिए, आपको iframe और नए टैब के बीच होने वाले कम्यूनिकेशन को खुद मैनेज करना होगा. साथ ही, iframe को यह ज़िम्मेदारी देनी होगी कि वह close postMessage
इवेंट जारी करे. साथ ही, "Open in Partner Name" हाइपरलिंक को हटाया जा रहा है, ताकि उपयोगकर्ता आने वाले समय में इस तरीके से टैब न बना सकें.
पाबंदियां
सभी 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 को सुझाव/राय देने या शिकायत करने के लिए, सुविधा के अनुरोध बनाएं.
यूआरएल रेगुलर एक्सप्रेशन का इस्तेमाल करके, ऐड-ऑन को खोजने की सुविधा चालू करें
शिक्षक अक्सर लिंक अटैच करके असाइनमेंट बनाते हैं. अपने ऐड-ऑन के इस्तेमाल का प्रमोशन करने के लिए, ऐसे रेगुलर एक्सप्रेशन तय किए जा सकते हैं जो उन संसाधनों के यूआरएल से मेल खाते हों जिन्हें आपके ऐड-ऑन में ऐक्सेस किया जा सकता है. अगर कोई शिक्षक ऐसा लिंक अटैच करता है जो आपके किसी रेगुलर एक्सप्रेशन से मेल खाता है, तो उसे खारिज किया जा सकने वाला एक डायलॉग दिखता है. इसमें उसे आपके ऐड-ऑन को आज़माने के लिए कहा जाता है. उन्हें यह डायलॉग सिर्फ़ तब दिखता है, जब उनके खाते के लिए ऐड-ऑन पहले से इंस्टॉल हो.
अगर आपको शिक्षकों को यह सुविधा देनी है, तो अपने Google संपर्कों को सही रेगुलर एक्सप्रेशन दें. अगर आपके दिए गए रेगुलर एक्सप्रेशन बहुत ज़्यादा सामान्य हैं या किसी अन्य ऐड-ऑन के साथ मेल खाते हैं, तो उन्हें ज़्यादा सटीक या अलग बनाने के लिए बदला जा सकता है.
पहली इमेज. शिक्षक, किसी नए असाइनमेंट में लिंक अटैच कर रहा है.
दूसरी इमेज. शिक्षक, तीसरे पक्ष के सोर्स से लिंक चिपका रहा है. शिक्षक ने तीसरे पक्ष का Classroom ऐड-ऑन पहले से ही इंस्टॉल किया हो.
तीसरी इमेज. यह इंटरैक्टिव डायलॉग, शिक्षक को तब दिखता है, जब चिपकाया गया लिंक, तीसरे पक्ष के डेवलपर के तय किए गए रेगुलर एक्सप्रेशन से मेल खाता है.
अगर कोई शिक्षक, इमेज 3 में दिखाए गए पॉप-अप में "इसे अभी आज़माएं" विकल्प चुनता है, तो उसे आपके ऐड-ऑन के अटैचमेंट डिस्कवरी iframe पर रीडायरेक्ट कर दिया जाता है.