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

Classroom アドオンは iframe 内に読み込まれ、 シームレスな体験をエンドユーザーに提供しますChronicle には 4 つの iframe タイプユーザー ジャーニー ディレクトリの iframe ページをご覧ください。 ここでは、各 iframe の目的と外観について概要を説明します。

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

パートナーには、業界のベスト プラクティスに従って iframe を保護することが求められます。 iframe を保護するために、Google のセキュリティ チームでは次のことを推奨しています。

iframe URI 設定

Attachment Setup URI は、Attachment Discovery iframe で読み込まれるものです。 ここから、教師がアドオンの添付ファイルを作成するフローを Classroom への投稿。Google Cloud プロジェクト コンソールで設定できます。 Google Cloud プロジェクトの API でこの URI を設定し、サービス > Google Workspace Marketplace SDK >[App Configuration] ページ。

iframe URI 設定

許可されるアタッチメント URI 接頭辞は、Terraform で設定された URI を検証するために使用されます。 AddOnAttachment*.addOnAttachments.create*.addOnAttachments.patch メソッド。検証はリテラル文字列の接頭辞 ワイルドカードは使用できません。

クエリ パラメータ

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

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

コース ID

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

すべての iframe に付属。

アイテム ID

itemId 値は Announcement の識別子です。

このアタッチメントに関連付けられている CourseWork または CourseWorkMaterial あります。

すべての iframe に付属。

アイテムの型

itemType 値は、このリソースが含まれているリソースタイプを

添付されています。渡される文字列値が "announcements" のいずれかである。 "courseWork" または "courseWorkMaterials"

すべての iframe に付属。

添付ファイル ID

attachmentId 値はアタッチメントの識別子です。

teacherViewUristudentViewUristudentWorkReviewUri iframe。

送信 ID

submissionId 値は生徒の課題の識別子です。 attachmentId と組み合わせて使用し、 生徒の提出物を把握できます

studentWorkReviewUri に含まれています。

で確認できます。
アドオン トークン

addOnToken 値は、認証トークンの作成に使用される認証トークンで、

addOnAttachments.create を呼び出してアドオンを作成します。

添付ファイルの検出 iframeリンクのアップグレードに含まれる機能 iframe

アップグレードする URL

urlToUpgrade 値が存在する場合は、

教師が課題に添付のリンクを追加し、教師が アドオンの添付ファイルにアップグレードしてください。まだお持ちでない場合は 機能について詳しくは、アドオンへのリンクのアップグレードに関するガイドをご覧ください。 添付ファイルをご覧ください。

リンク アップグレード iframe に付属。

login_hint クエリ パラメータは、 Classroom ユーザーがアドオンのウェブページにアクセスしている。このクエリ パラメータ iframe の src URL で指定します。これは、ユーザーが以前に 追加すると、エンドユーザーがスムーズにログインできるようになります。また、データ アナリストとして このクエリ パラメータをアドオンの実装で使用してください。

ログインのヒント

login_hint は、ユーザーの Google Cloud ID の一意の識別子

アカウント] をタップします。ユーザーが初めてアドオンにログインすると、 login_hint パラメータは、それ以降のアドオンへのアクセス時に 適用できます。

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

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

すべての iframe に付属。

で確認できます。

添付ファイルの検出 iframe

ディメンション 説明
必須
URI アドオンのメタデータで提供
クエリ パラメータ courseId さん、itemId さん、itemType さん、 addOnTokenlogin_hint
高さ トップヘッダーは、ウィンドウの高さの 80% から 60 ピクセルを差し引いた値
1,600 ピクセル以下
ウィンドウの幅が 600 ピクセル以下の場合は 90% ワイド
ウィンドウ幅の 80%(ウィンドウ > のとき)幅 600 ピクセル

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

  1. Classroom アドオンが Google Workspace に登録されている 添付ファイルの検出 URI が https://example.com/addon の Marketplace。
  2. 教師がこのアドオンをインストールして、新しいお知らせ、課題、または投稿を作成します。 受講者の能力を証明できます。例: itemId=234 itemType=courseWorkcourseId=123
  3. そのアイテムの設定中に、新しくインストールしたアドオンを選択します。 。
  4. Classroom によって、ソース URL が「 https://example.com/addon?courseId=123&itemId=234&itemType=courseWork&addOnToken=456
    1. 教師が iframe 内で添付ファイルを選択する作業。
  5. 添付ファイルを選択すると、アドオンは postMessage を以下に送信します。 Classroom を使用して iframe を閉じます。

TeacherViewUri と studentViewUri の iframe

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

studentWorkReviewUri iframe

ディメンション 説明
必須 いいえ(アクティビティ タイプの添付ファイルかどうかを判断します)
URI studentWorkReviewUri
クエリ パラメータ courseId さん、itemId さん、itemType さん、 attachmentIdsubmissionIdlogin_hint
高さ トップヘッダーのウィンドウの高さ 100% から 168 ピクセルを引いた値
ウィンドウの幅 100% からサイドバーの幅を引いた値<>サイドバーは 312 ピクセル 拡大時は 56 ピクセル、折りたたみ時は 56 ピクセル

ディメンション 説明
必須 ○(アドオン添付ファイルへのリンクのアップグレード) ご確認ください
URI アドオンのメタデータで提供
クエリ パラメータ courseId さん、itemId さん、itemType さん、 addOnTokenurlToUpgradelogin_hint
高さ トップヘッダーは、ウィンドウの高さの 80% から 60 ピクセルを差し引いた値
1,600 ピクセル以下
ウィンドウの幅が 600 ピクセル以下の場合は 90% ワイド
ウィンドウ幅の 80%(ウィンドウ > のとき)幅 600 ピクセル
  1. Classroom アドオンはリンク アップグレード URI で登録されています。 https://example.com/upgrade。次のホストとパスが指定されています Classroom で追加すべきリンクの添付ファイルの接頭辞パターン アドオンの添付ファイルへのアップグレードを試みる: <ph type="x-smartling-placeholder">
      </ph>
    • ホストは example.com で、パスの接頭辞は /quiz です。
  2. 教師がいずれかの期間内に新しいお知らせ、課題、資料を作成すると、 説明します。たとえば、itemId=234itemType=courseWorkcourseId=123
  3. 教師がリンク https://example.com/quiz/5678 を [リンク] に貼り付けます。 添付ファイル ダイアログが表示されます。この教師は アドオン添付ファイルへのリンクのアップグレードを求めるメッセージが表示されます。
  4. Classroom で、URL が設定された Link Upgrade iframe が起動される から https://example.com/upgrade?courseId=123&itemId=234&itemType=courseWork&addOnToken=456&urlToUpgrade=https%3A%2F%2Fexample.com%2Fquiz%2F5678

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

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

iframe を閉じる

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

サードパーティの Cookie をブロックすると、 ログインしたセッションを iframe 内で確認できます。詳しくは、https://www.cookiestatus.com さまざまなブラウザでの Cookie ブロックの現状もちろん、これは この問題は Google Classroom アドオンに固有のものではなく、 使用できます。多くのパートナー様はすでにこの問題に遭遇しています。

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

  • 新しいタブを開いてファーストパーティ コンテキストの Cookie を作成します。一部のブラウザ 作成時にファーストパーティ コンテキストで作成された Cookie に サードパーティ コンテキストで識別されます。
  • サードパーティ Cookie を許可するようにユーザーに依頼します。これが常に可能とは限りません 共有することもできます。
  • Cookie に依存しない単一ページのウェブ アプリケーションを設計する。

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

URL 正規表現を使用してアドオンを検出できるようにする

教師は頻繁に課題を作成し、リンクを添付します。使用を促進するため 指定すると、リソースの URL と照合する正規表現を アドオンでアクセスできます1 つに一致するリンクを添付している教師 正規表現を使用して、会話の試行を促すダイアログが 追加します。このダイアログは、アドオンがすでにインストールされている できます。

教師に対してこのような行動を実践したい場合は、Google 適切な正規表現を使用して連絡先を取得します。正規表現で 範囲が広すぎる場合や、他のアドオンと競合する場合は、 より限定的または区別しやすいように変更します。

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

教師がリンクを貼り付けています 図 2.サードパーティのリンクを貼り付ける教師 あります。教師は、すでにサードパーティ製の Classroom アドオン。

正規表現の検出可能性のダイアログ 図 3.表示されるインタラクティブ ダイアログ 正規表現で指定された正規表現に一致する場合に、教師に公開されます。 サードパーティ開発者に通知されます。

教師が [今すぐ試す] を選択した場合図 3 に示すように アドオンの添付ファイルの検出 iframe にリダイレクトされます。