Classroom-Add-ons werden in einem iFrame geladen, um Endnutzern eine nahtlose und praktische Nutzung zu bieten. Es gibt vier verschiedene iFrame-Typen. Einen Überblick über den Zweck und das Aussehen der einzelnen iFrames erhalten Sie im Verzeichnis der Nutzerpfade unter iFrame-Seiten.
iFrame-Sicherheitsrichtlinien
Von Partnern wird erwartet, dass sie die branchenüblichen Best Practices befolgen, um ihre iFrames zu schützen. Zum Schutz des iFrames empfiehlt unser Sicherheitsteam Folgendes:
HTTPS ist erforderlich. Es wird dringend empfohlen, TLS 1.2 oder höher zu verwenden und HTTP Strict Transport Security zu aktivieren. Weitere Informationen finden Sie im zugehörigen MDN-Artikel über Strict Transport Security.
Aktivieren Sie die strenge Content Security Policy. Weitere Informationen finden Sie in diesem OWASP-Artikel und dem zugehörigen MDN-Artikel zur Content Security Policy.
Aktivieren Sie das Attribut „Sicheres Cookie“. Weitere Informationen finden Sie im Attribut „HttpOnly“ und im zugehörigen Artikel zu Cookies-MDN.
iFrame-URI-Konfiguration
Der URI für die Anhangeinrichtung wird vom iFrame für die Anhangerkennung geladen. Hier beginnen die Lehrkräfte mit dem Erstellen von Add-on-Anhängen zu einem Classroom-Beitrag. Sie kann in der Google Cloud-Projektkonsole festgelegt werden. Legen Sie diesen URI unter „API und Dienst“ > „Google Workspace Marketplace SDK“ > App-Konfiguration in Ihrem Google Cloud-Projekt fest.
Die Zulässigen Präfixe für Anhangs-URIs werden verwendet, um die in AddOnAttachment festgelegten URIs mithilfe der Methoden *.addOnAttachments.create
und *.addOnAttachments.patch
zu validieren. Die Validierung erfolgt durch eine literale Stringpräfix-Übereinstimmung und die Verwendung von Platzhaltern ist derzeit nicht zulässig.
Abfrageparameter
Die iFrames geben wichtige Informationen als Abfrageparameter an das Add-on weiter. Es gibt zwei Kategorien von Parametern: anhangbezogene Parameter und anmeldebezogene Parameter.
Anhangsbezogene Parameter
Die anhangbezogenen Parameter stellen dem Add-on Informationen über den Kurs, die Aufgabe, den Add-on-Anhang, die Einreichung des Schülers/Studenten und ein Autorisierungstoken bereit.
- Kurs-ID
Der Wert
courseId
ist eine Kennung des Kurses.In allen iFrames enthalten.
- Beitrags-ID (eingestellt)
Der Wert
postId
ist eine ID des Beitrags (Ankündigung, Kursaufgabe oder Kursmaterial), dem dieser Anhang zugeordnet ist.In allen iFrames enthalten.
- Artikel-ID
Der Wert
itemId
ist eine Kennung vonAnnouncement
,CourseWork
oderCourseWorkMaterial
, an die dieser Anhang angehängt ist.In allen iFrames enthalten.
- Elementtyp
Der Wert
itemType
gibt den Ressourcentyp an, an den dieser Anhang angehängt ist. Der übergebene Stringwert ist"announcements"
,"courseWork"
oder"courseWorkMaterials"
.In allen iFrames enthalten.
- Anhangs-ID
Der Wert
attachmentId
ist eine Kennung für den Anhang.In den iFrames
teacherViewUri
,studentViewUri
undstudentWorkReviewUri
enthalten.- Einreichungs-ID
Der Wert
submissionId
ist eine Kennung für die Aufgabe des Schülers/Studenten. Er sollte aber in Kombination mit demattachmentId
verwendet werden, um die Arbeit des Schülers/Studenten bei einer bestimmten Aufgabe zu identifizieren.Im
studentWorkReviewUri
enthalten.
- Add-on-Token
Der Wert
addOnToken
ist ein Autorisierungstoken, mit demaddOnAttachments.create
-Aufrufe zum Erstellen des Add-ons ausgeführt werden.Im iFrame für die Anhangerkennung und im iFrame für das Linkupgrade enthalten.
- Umzustellende URL
Wenn der Wert
urlToUpgrade
vorhanden ist, bedeutet dies, dass die Lehrkraft der Aufgabe einen Linkanhang hinzugefügt und zugestimmt hat, ein Upgrade auf einen Add-on-Anhang durchzuführen. Wenn Sie dieses Feature noch nicht konfiguriert haben, finden Sie weitere Informationen in der Anleitung zum Aktualisieren von Links auf Add-on-Anhänge.Im iFrame für die Linkaktualisierung enthalten
Parameter für die Anmeldung
Der Abfrageparameter login_hint
liefert Informationen zu dem Classroom-Nutzer, der die Add-on-Webseite besucht. Dieser Abfrageparameter wird in der iFrame-URL src
bereitgestellt. Sie wird gesendet, wenn der Nutzer Ihr Add-on bereits verwendet hat, um die Anmeldung für Endnutzer zu vereinfachen. Sie müssen diesen Abfrageparameter in Ihrer Add-on-Implementierung verarbeiten.
- Anmeldehinweis
Die
login_hint
ist eine eindeutige Kennung für das GoogleKonto. Nachdem sich der Nutzer zum ersten Mal bei Ihrem Add-on angemeldet hat, wird der Parameter
login_hint
bei jedem nachfolgenden Besuch von demselben Nutzer übergeben.Es gibt zwei mögliche Anwendungsbereiche für den Parameter
login_hint
:- Übergeben Sie den Wert
login_hint
während des Authentifizierungsvorgangs, damit der Nutzer seine Anmeldedaten nicht eingeben muss, wenn das Anmeldedialogfeld angezeigt wird. Der Nutzer wird nicht automatisch angemeldet. - Nachdem der Nutzer angemeldet ist, können Sie diesen Parameter verwenden, um den Wert mit anderen Nutzern zu vergleichen, die Sie sich möglicherweise bereits beim Add-on angemeldet haben. Wenn du eine Übereinstimmung findest, kannst du den Nutzer angemeldet lassen und keinen Anmeldevorgang anzeigen. Wenn der Parameter mit keinem Ihrer angemeldeten Nutzer übereinstimmt, fordern Sie ihn auf, sich mit einer Anmeldeschaltfläche von Google anzumelden.
In allen iFrames enthalten.
- Übergeben Sie den Wert
Anhangerkennung-iFrame
Dimension | Beschreibung |
---|---|
Erforderlich | Ja |
URI | In den Add-on-Metadaten angegeben |
Abfrageparameter | courseId , postId (verworfen), itemId , itemType , addOnToken und login_hint . |
Größe | 80% Fensterhöhe minus 60 Pixel für die obere Kopfzeile |
Breite | Maximal 1.600 Pixel 90% Fensterbreite, wenn das Fenster mindestens 600 Pixel breit ist 80% Fensterbreite, wenn das Fenster > 600 Pixel breit ist |
Beispielszenario für die Anhangerkennung
- Ein Classroom-Add-on ist im Google Workspace Marketplace mit dem URI der Anhangerkennung
https://example.com/addon
registriert. - Eine Lehrkraft installiert dieses Add-on und erstellt in einem ihrer Kurse neue Ankündigungen, Aufgaben oder Materialien. Beispiel:
itemId=234
,itemType=courseWork
undcourseId=123
. - Bei der Konfiguration dieses Elements wählt die Lehrkraft das neu installierte Add-on als Anhang aus.
- Classroom erstellt einen iFrame, für den die src-URL auf
https://example.com/addon?courseId=123&itemId=234&itemType=courseWork&addOnToken=456
festgelegt ist.- Die Lehrkraft muss innerhalb des iFrames einen Anhang auswählen.
- Bei der Auswahl des Anhangs sendet das Add-on eine
postMessage
an Classroom, um den iFrame zu schließen.
TeacherViewUri- und studentViewUri-iFrames
Dimension | Beschreibung |
---|---|
Erforderlich | Ja |
URI | teacherViewUri oder studentViewUri |
Abfrageparameter | courseId , postId (verworfen), itemId , itemType , attachmentId und login_hint . |
Größe | 100% Fensterhöhe minus 140 Pixel für die obere Kopfzeile |
Breite | 100% Fensterbreite |
studentWorkReviewUri iFrame
Dimension | Beschreibung |
---|---|
Erforderlich | Nein (bestimmt, ob es sich um einen Anhang vom Typ „Aktivität“ handelt) |
URI | studentWorkReviewUri |
Abfrageparameter | courseId , postId (verworfen), itemId , itemType , attachmentId , submissionId und login_hint . |
Größe | 100% Fensterhöhe minus 168 Pixel für die obere Kopfzeile |
Breite | 100% Fensterbreite minus Breite der Seitenleiste<> die Seitenleiste beträgt 312 Pixel, wenn sie maximiert ist, und 56 Pixel, wenn sie minimiert ist. |
iFrame für Link-Upgrade
Dimension | Beschreibung |
---|---|
Erforderlich | Ja, wenn das Upgrade von Links zu Add-on-Anhängen von Ihrem Add-on unterstützt wird. |
URI | In den Add-on-Metadaten angegeben |
Abfrageparameter | courseId , postId (verworfen), itemId , itemType , addOnToken , urlToUpgrade und login_hint . |
Größe | 80% Fensterhöhe minus 60 Pixel für die obere Kopfzeile |
Breite | Maximal 1.600 Pixel 90% Fensterbreite, wenn das Fenster mindestens 600 Pixel breit ist 80% Fensterbreite, wenn das Fenster > 600 Pixel breit ist |
Beispiel für ein Link-Upgrade-Szenario
- Ein Classroom-Add-on wird mit dem Link-Upgrade-URI
https://example.com/upgrade
registriert. Sie haben die folgenden Host- und Pfadpräfixe für Linkanhänge angegeben, die Classroom nach einem Upgrade auf einen Add-on-Anhang ausführen sollte:- Der Host ist
example.com
und das Pfadpräfix/quiz
.
- Der Host ist
- Eine Lehrkraft erstellt in einem ihrer Kurse eine neue Ankündigung, Aufgabe oder Material. Beispiel:
itemId=234
,itemType=courseWork
undcourseId=123
. - Eine Lehrkraft fügt in das Dialogfeld zum Anhängen von Links einen Link (
https://example.com/quiz/5678
) ein, der einem von Ihnen angegebenen URL-Muster entspricht. Die Lehrkraft wird dann aufgefordert, den Link auf einen Add-on-Anhang zu aktualisieren. Classroom startet den iFrame für die Link-Umstellung mit der URL
https://example.com/upgrade?courseId=123&postId=234&addOnToken=456&urlToUpgrade=https%3A%2F%2Fexample.com%2Fquiz%2F5678
.Sie werten die Abfrageparameter aus, die an den iFrame übergeben wurden, und rufen den Endpunkt
CreateAddOnAttachment
auf. Der AbfrageparameterurlToUpgrade
wird URI-codiert, wenn er an den iFrame übergeben wird. Sie müssen den Parameter decodieren, um ihn in seiner ursprünglichen Form zu erhalten. JavaScript bietet beispielsweise die FunktiondecodeURIComponent()
.Wenn ein Add-on-Anhang über einen Link erstellt wurde, senden Sie eine
postMessage
an Classroom, um den iFrame zu schließen.
iFrame schließen
Der iFrame kann über das Lerntool geschlossen werden, indem ein postMessage
mit der Nutzlast {type: 'Classroom', action: 'closeIframe'}
gesendet wird.
Classroom akzeptiert diese postMessage
nur aus dem Hostnamen und dem Port, der dem ursprünglichen URI entspricht, der geöffnet wurde.
<button id="close">Send message to close iframe</button>
<script>
document.querySelector('#close')
.addEventListener('click', () => {
window.parent.postMessage({
type: 'Classroom',
action: 'closeIframe',
}, '*');
});
</script>
iFrame aus dem iFrame schließen
Der Domain+Port der Seite, die das postMessage
-Ereignis sendet, muss denselben Domain+Port haben wie der URI, der zum Starten des iFrames verwendet wurde. Andernfalls wird die Meldung ignoriert. Sie können das Problem umgehen, indem Sie wieder zu einer Seite in der ursprünglichen Domain weiterleiten, die lediglich das postMessage
-Ereignis sendet.
iFrame in einem neuen Tab schließen
Domainübergreifende Schutzmaßnahmen verhindern das. Sie können das Problem umgehen, indem Sie die Kommunikation zwischen dem iFrame und dem neuen Tab selbst verwalten und letztendlich das Schließen-postMessage
-Ereignis vom iFrame auslösen lassen. Hinweis: Der Hyperlink „Open in Partner Name“ (In Partnername öffnen) wird entfernt, damit Nutzer Tabs in naher Zukunft nicht auf diese Weise erstellen.
Einschränkungen
Alle iFrames werden mit den folgenden Sandbox-Attributen geöffnet:
allow-popups
allow-popups-to-escape-sandbox
allow-forms
allow-scripts
allow-storage-access-by-user-activation
allow-same-origin
und die folgenden Richtlinien für Funktionen
allow="microphone *"
Drittanbieter-Cookies blockieren
Durch das Blockieren von Drittanbieter-Cookies wird es schwierig, eine angemeldete Sitzung in einem iFrame aufrechtzuerhalten. Unter https://www.cookiestatus.com finden Sie Informationen zum aktuellen Status der Cookie-Blockierung in verschiedenen Browsern. Natürlich tritt dieses Problem nicht nur auf Google Classroom-Add-ons auf und betrifft alle Websites, die von Drittanbietern in Frames eingebunden werden. Viele unserer Partner haben dieses Problem bereits festgestellt.
Hier einige allgemeine Tipps, wie Sie das Problem umgehen können:
- Öffnen Sie einen neuen Tab, um das Cookie in einem eigenen Kontext zu erstellen. Einige Browser gewähren Zugriff auf Cookies, die im Erstanbieterkontext in einem Drittanbieterkontext erstellt wurden.
- Bitten Sie den Nutzer, Drittanbieter-Cookies zuzulassen. Dies ist möglicherweise nicht immer bei allen Nutzenden möglich.
- Erstellen Sie einseitige Web-Apps, die nicht auf Cookies angewiesen sind.
In zukünftigen Browserversionen sind mehr Cookie-Einschränkungen zu erwarten. Sie können Funktionsanfragen erstellen, um Google Feedback dazu zu senden, wie die von Partnern benötigten Steigerungen reduziert werden können.
Sichtbarkeit von Add-ons mithilfe von regulären URL-Ausdrücken aktivieren
Lehrkräfte erstellen häufig Aufgaben mit Linkanhängen. Um die Verwendung Ihres Add-ons zu fördern, können Sie reguläre Ausdrücke angeben, die mit URLs von Ressourcen übereinstimmen, auf die in Ihrem Add-on zugegriffen werden kann. Eine Lehrkraft, die einen Link anhängt, der mit einem Ihrer regulären Ausdrücke übereinstimmt, sieht ein schließbares Dialogfeld, in dem sie aufgefordert wird, das Add-on auszuprobieren. Sie sehen das Dialogfeld nur, wenn das Add-on bereits für ihr Konto installiert ist.
Wenn du Lehrkräften dieses Verhalten anbieten möchtest, stelle deinen Google-Kontakten die entsprechenden regulären Ausdrücke zur Verfügung. Wenn die regulären Ausdrücke, die Sie angeben, zu allgemein sind oder mit einem anderen Add-on in Konflikt stehen, werden sie möglicherweise so geändert, dass sie stärker eingeschränkt oder eigenständig sind.
Abbildung 1: Die Lehrkraft wählt einen Link an eine neue Aufgabe aus.
Abbildung 2: Die Lehrkraft fügt einen Link aus einer externen Quelle ein. Die Lehrkraft hat bereits das Classroom-Add-on des Drittanbieters installiert.
Abbildung 3: Das interaktive Dialogfeld, das der Lehrkraft angezeigt wird, wenn der eingefügte Link einem regulären Ausdruck entspricht, der vom Entwickler des Drittanbieters festgelegt wurde.
Wenn eine Lehrkraft im Pop-up die Option „Jetzt testen“ auswählt (siehe Abbildung 3), werden sie zum iFrame der Anhangerkennung Ihres Add-ons weitergeleitet.