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