iframe とクエリ パラメータの詳細

Classroom アドオンは iframe 内に読み込まれ、エンドユーザーにシームレスで便利なユーザー エクスペリエンスを提供します。iframe には 5 種類あります。各 iframe の目的と外観の概要については、ユーザー ジャーニー ディレクトリの iframe ページをご覧ください。

iframe のセキュリティ ガイドライン

デベロッパーは、業界のベスト プラクティスに沿って iframe を保護する必要があります。ただし、有効な認証情報があり、コース内のユーザーの役割を正しく識別できることを確認するために、ユーザー フローに特定の API インタラクションを組み込むことも必要です。

サーバー アプリケーションの構成

iframe を保護するには、次のサーバー構成をおすすめします。

クエリ パラメータ

iframe は、重要な情報をクエリ パラメータとしてアドオンに渡します。パラメータには、添付ファイル関連とログイン関連の 2 つのカテゴリがあります。

添付ファイル関連のパラメータは、コース、課題、アドオンの添付ファイル、生徒の提出物、認証トークンに関する情報をアドオンに提供します。

コース ID

courseId の値はコースの識別子です。

すべての iframe に含まれています。

アイテム ID

itemId 値は、このアタッチメントが接続されている AnnouncementCourseWork、または CourseWorkMaterial の識別子です。

すべての iframe に含まれています。

アイテムの型

itemType 値は、このアタッチメントが関連付けられているリソースタイプを識別します。渡される文字列値は、"announcements""courseWork""courseWorkMaterials" のいずれかです。

すべての iframe に含まれています。

添付ファイル ID

attachmentId の値は、添付ファイルの識別子です。

teacherViewUristudentViewUristudentWorkReviewUri の iframe に含まれています。

送信 ID

submissionId 値は生徒の課題の ID ですが、attachmentId と組み合わせて使用して、特定の課題の生徒の課題を識別する必要があります。

studentWorkReviewUri に含まれています。

アドオン トークン

addOnToken 値は、アドオンを作成するために addOnAttachments.create 呼び出しを行うために使用される認証トークンです。

添付ファイルの検出 iframeリンクのアップグレード iframe に含まれています。

アップグレードする URL

urlToUpgrade 値が存在する場合、教師が課題にリンクの添付ファイルを含め、それをアドオンの添付ファイルにアップグレードすることに同意したことを意味します。この機能がまだ設定されていない場合は、アドオンの添付ファイルへのリンクをアップグレードするに関するガイドで詳細をご確認ください。

リンク アップグレード iframe に含まれています。

login_hint クエリ パラメータは、アドオンのウェブページにアクセスしている Classroom ユーザーに関する情報を提供します。このクエリ パラメータは、iframe の src URL で指定します。これは、ユーザーが以前にアドオンを使用したことがある場合に送信され、エンドユーザーのログインの手間を軽減するのに役立ちます。アドオンの実装でこのクエリ パラメータを処理する必要があります。

ログインヒント

login_hint は、ユーザーの Google アカウントの一意の識別子です。ユーザーがアドオンに初めてログインすると、同じユーザーがアドオンにアクセスするたびに login_hint パラメータが渡されます。

login_hint パラメータには、次の 2 つの用途があります。

  1. 認証フロー中に login_hint 値を渡して、ログイン ダイアログが表示されたときにユーザーが認証情報を入力する必要がないようにします。ユーザーは自動的にログインされません。
  2. ユーザーがログインしたら、このパラメータを使用して、アドオンにすでにログインしているユーザーと比較します。一致するユーザーが見つかった場合は、ユーザーをログイン状態のままにして、ログイン フローを表示しないようにすることができます。パラメータがログインしているユーザーのいずれにも一致しない場合は、Google ブランドのログイン ボタンを使用してログインするようユーザーに促します。

すべての iframe に含まれています。

Attachment Discovery iframe

ディメンション 説明
必須
URI アドオンのメタデータで提供されます
クエリ パラメータ courseIditemIditemTypeaddOnTokenlogin_hint
高さ ウィンドウの高さの 80% から上部のヘッダーの 60 ピクセルを引いた値
最大 1,600 ピクセル
ウィンドウの幅が 600 ピクセル以下の場合はウィンドウ幅の 90%
ウィンドウの幅が 600 ピクセルを超える場合はウィンドウ幅の 80%

添付ファイル検出のシナリオの例

  1. Classroom アドオンは、添付ファイル検出 URI が https://example.com/addon の Google Workspace Marketplace に登録されています。
  2. 教師がこのアドオンをインストールし、コースの 1 つで新しいお知らせ、課題、教材を作成します。たとえば、itemId=234itemType=courseWorkcourseId=123 です。
  3. そのアイテムを設定する際に、教師は新しくインストールしたアドオンを添付ファイルとして選択します。
  4. Classroom は、src URL が https://example.com/addon?courseId=123&itemId=234&itemType=courseWork&addOnToken=456 に設定された iframe を作成します。
    1. 教師が iframe 内で操作して添付ファイルを選択します。
  5. 添付ファイルが選択されると、アドオンは postMessage を Classroom に送信して iframe を閉じます。

teacherViewUri と studentViewUri の iframe

ディメンション 説明
必須
URI teacherViewUri または studentViewUri
クエリ パラメータ courseIditemIditemTypeattachmentIdlogin_hint
高さ ウィンドウの高さの 100% から上部ヘッダーの 140 ピクセルを引いた値
ウィンドウの幅の 100%

studentWorkReviewUri iframe

ディメンション 説明
必須 いいえ(アクティビティ タイプのアタッチメントかどうかを判断します)
URI studentWorkReviewUri
クエリ パラメータ courseIditemIditemTypeattachmentIdsubmissionIdlogin_hint
高さ ウィンドウの高さの 100% から上部ヘッダーの 168 ピクセルを引いた値
ウィンドウ幅の 100% からサイドバーの幅を引いた値<> サイドバーの幅は、展開時は 312 ピクセル、折りたたみ時は 56 ピクセル
ディメンション 説明
必須 はい。リンクをアドオンの添付ファイルにアップグレードする機能がアドオンでサポートされている場合、可能です。
URI アドオンのメタデータで提供されます
クエリ パラメータ courseIditemIditemTypeaddOnTokenurlToUpgradelogin_hint
高さ ウィンドウの高さの 80% から上部のヘッダーの 60 ピクセルを引いた値
最大 1,600 ピクセル
ウィンドウの幅が 600 ピクセル以下の場合はウィンドウ幅の 90%
ウィンドウの幅が 600 ピクセルを超える場合はウィンドウ幅の 80%
  1. Classroom アドオンは、リンク アップグレード URI https://example.com/upgrade で登録されます。Classroom がアドオンの添付ファイルにアップグレードしようとするリンクの添付ファイルについて、次のホストとパスのプレフィックス パターンを指定しました。
    • ホストは example.com で、パスの接頭辞は /quiz です。
  2. 教師がコース内で新しいお知らせ、課題、資料を作成したとき。たとえば、itemId=234itemType=courseWorkcourseId=123 です。
  3. 教師が、指定した URL パターンに一致するリンク https://example.com/quiz/5678 を [リンクの添付] ダイアログに貼り付けます。教師に、リンクをアドオンの添付ファイルにアップグレードするよう求めるメッセージが表示されます。
  4. Classroom は、URL が https://example.com/upgrade?courseId=123&itemId=234&itemType=courseWork&addOnToken=456&urlToUpgrade=https%3A%2F%2Fexample.com%2Fquiz%2F5678 に設定されたリンク アップグレード iframe を起動します。

  5. iframe で渡されたクエリ パラメータを評価し、CreateAddOnAttachment エンドポイントを呼び出します。urlToUpgrade クエリ パラメータは、iframe で渡されるときに URI エンコードされます。パラメータを元の形式で取得するには、パラメータをデコードする必要があります。たとえば、JavaScript には decodeURIComponent() 関数があります。

  6. リンクからアドオンの添付ファイルが正常に作成されたら、Classroom に postMessage を送信して iframe を閉じます。

iframe を閉じる

iframe は、ペイロード {type: 'Classroom', action: 'closeIframe'} を含む postMessage を送信することで、学習ツールから閉じることができます。Classroom は、開かれた元の URI に対応する 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 の起動に使用される URI のドメインとポートと同じである必要があります。そうでない場合、メッセージは無視されます。回避策として、postMessage イベントを送信するだけの元のドメインのページにリダイレクトします。

新しいタブから iframe を閉じる

クロスドメイン保護により、この動作は阻止されます。回避策として、iframe と新しいタブ間の通信を独自に処理し、最終的に iframe が 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 *"

サードパーティの Cookie をブロックすると、iframe でログイン セッションを維持することが難しくなることに注意してください。さまざまなブラウザでの Cookie ブロックの現在の状態については、https://www.cookiestatus.com を参照してください。もちろん、この問題は Google Classroom アドオンに固有のものではなく、サードパーティを iframe で埋め込んでいるすべてのウェブサイトに影響します。多くのパートナーがすでにこの問題に直面しています。

一般的な回避策は次のとおりです。

  • 新しいタブを開き、ファーストパーティ コンテキストで Cookie を作成します。一部のブラウザでは、サードパーティ コンテキストでファーストパーティ コンテキストで作成された Cookie へのアクセスが許可されます。
  • サードパーティ Cookie を許可するようお客様に依頼します。すべてのユーザーでこの方法が利用できるとは限りません。
  • Cookie に依存しない単一ページ ウェブ アプリケーションを設計します。

今後のブラウザ バージョンでは、Cookie の制限がさらに強化される予定です。機能リクエストを作成して、パートナーに必要な作業を減らす方法について Google にフィードバックを送信します。

URL の正規表現を使用してアドオンの検出可能性を有効にする

教師はリンクの添付ファイルを含む課題を頻繁に作成します。アドオンの使用を促進するには、アドオンでアクセスできるリソースの URL に一致する正規表現を指定します。教師が正規表現のいずれかに一致するリンクを添付すると、アドオンを試すよう促すダイアログが表示されます。このダイアログは閉じることができます。このダイアログは、アドオンがアカウントにすでにインストールされている場合にのみ表示されます。

教師にこの動作を提供したい場合は、Google の担当者に適切な正規表現を伝えてください。指定した正規表現が広すぎる場合や、別のアドオンと競合する場合は、より制限的または明確になるように変更されることがあります。

リンクの添付を選択する教師 図 1. 教師が新しい課題にリンク添付ファイルを選択している様子。

教師がリンクを貼り付ける 図 2. 教師がサードパーティ ソースのリンクを貼り付けている。教師がサードパーティの Classroom アドオンをすでにインストールしている。

正規表現の検出可能性ダイアログ 図 3. 貼り付けられたリンクがサードパーティ デベロッパーが指定した正規表現と一致した場合に教師に表示されるインタラクティブ ダイアログ。

教師が図 3 のポップアップで [今すぐ試す] を選択すると、アドオンの添付ファイル検出 iframe にリダイレクトされます。