署名付き埋め込みの設定方法

外部サービスにノートブックをシームレスに統合

設定方法

署名付き埋め込みの準備

  • APIキーとAPIシークレットの準備

    • ワークスペース設定を開き、APIキーメニューをクリックします。

    • APIキーを追加ボタンをクリックして新しいAPIキーを作成します。

    • APIキーとAPIシークレット(後でAPIコールに使用します)をメモしておきます。

  • ノートブックを開く

    • 共有したいノートブックを開きます。

    • ヘッダーの共有ボタンをクリックし、署名付き埋め込みタブを選択します。

  • 署名付き埋め込みの公開

    • 公開対象のページの選択や、公開時のオプションを設定します。

    • 公開ボタンをクリックします。

  • 署名付き埋め込みの設定

    • 権限を付与するAPIキーセクションで使用するAPIキーを追加します。

    • サーバーサイドでのトークン発行時に値を指定するパラメータを、サーバーサイドパラメータセクションで設定します。

サーバーからトークンを発行する

  • トークンを発行するには以下のAPIを使用します

    • APIを呼び出すために必要な引数は セットアップガイドタブで確認できます。

    • APIシークレットが外部に漏れないようにするため、サーバーサイドでAPIコールを実行してください。

    • ユーザーセッションごとにトークンを発行し、再利用しないでください(デフォルトでは1時間後に期限切れになります)。

post
本文
api_keystring · 最小: 24 · 最大: 24必須

API Key. Can be issued from 'Workspace settings > API Keys'

Example: 6729a28bc7100424ad4e2e5d
api_secretstring · 最小: 32 · 最大: 32必須

API Secret. Generated when issuing 'API Key'

Example: c711defdff5f4e3e8e53d4f408579b9a
integration_idstring · 最小: 24 · 最大: 24必須

Integration ID. Can be obtained from the signed embed settings

Example: 671ef14b0d08cf6c657df7da
page_idstring · 最小: 24 · 最大: 24必須

Page ID to be displayed in the notebook. Can be obtained from the signed embed settings

Example: 671ecbbf2990c63fea3b3a26
token_user_idstring · 最小: 1必須

Specify the user ID within the application where the notebook is embedded. Ensure that the token can uniquely identify the token user for security reason.

expires_ininteger · 最小: 1 · 最大: 86400オプション

Token expiration time in seconds. Default is 3600 seconds (1 hour)

Example: 3600
cache_max_ageinteger · 最大: 86400オプション

Cache max age in seconds. Default is 86400 (24 hours)

Example: 86400
レスポンス
chevron-right
200

Generated token

application/json
post
/api/notebook/issueToken

iframeの埋め込み

署名付き埋め込みURL を使用してHTMLをサービスに埋め込みます。 トークンと一緒にクライアントサイドオプションを設定できます。詳細については セットアップガイド付録 を参照してください。

[推奨] パターン1. トークンを postMessage で渡す

  1. 署名付き埋め込みURLをsrc属性としたiframe要素を作成します

  2. postMessageを介してiframeから{type: "READY_FOR_TOKEN"}メッセージを待ちます

  3. postMessageを介して{type: "SET_TOKEN", token: "{{ TOKEN_HERE }}", ...clientSideOptions}メッセージをiframeに送り返します

    • clientSideOptions には、パラメータの初期値等の設定を指定できます。詳細については 付録 を参照してください。

パターン2. トークンをURLパラメータで渡す

  1. 署名付き埋め込みURLにクエリパラメータとしてトークンを追加(?token=xxx

  2. clientSideOptionsをクエリパラメータとして追加(オプション) (各キーに対して値を encodeURIComponent(JSON.stringify(value)) で生成して付与)

  3. URLをsrc属性とするiframe要素を作成します

付録

クライアントサイドオプション

「iframeの埋め込み」の際に渡すことができる、クライアントサイドオプション(clientSideOptions)には以下のような項目があります。

key
description

displayOptions.sqlDisplay

SQL表示オプションを指定します。

"SHOW": SQLブロックとビルド済SQLを表示します "RESULT_ONLY": SQLブロック内のSQL部分とビルド済SQLを非表示にします "HIDE": SQLブロックとビルド済SQLを非表示にします

displayOptions.hideParamsForm

パラメータフォームを非表示にする場合にtrueを指定します。

displayOptions.expandParamsFormByDefault

デフォルトでパラメータフォームを開く場合にtrueを指定します。hideParamsFormtrueの場合は無視されます。

params[]

クライアントサイドパラメータの初期値を指定します。 ここで初期値の指定されなかったクライアントサイドパラメータは、署名付き埋め込みの公開時に設定されていたパラメータの値が初期値として使用されます。

params[].param_id

パラメータのIDを指定します。

params[].param_value

パラメータの値を指定します。パラメータの値は、JSON.stringify()で文字列に変換して指定してください。

パラメータの値に、"_RESET_TO_DEFAULT_"を指定することで、署名付き埋め込みの公開時にパラメータに設定されていたデフォルト値を初期値として使用できます。\ 相対日付によるデフォルト値の解決も行われます。

params[].is_hidden

パラメータの入力フォームを非表示にする場合にtrueを指定します。hideParamsFormtrueの場合は無視されます。

クライアントサイドオプションの設定例を以下に示します。

メッセージ一覧

「iframeの埋め込み」でパターン1による実装を行った場合、iframeのpostMessage機能を使用してメッセージを交換できます。 以下に、送受信できるメッセージの一覧を示します。

iframeへのメッセージ

type
description

SET_TOKEN

認証トークンを設定し、ノートブックのレンダリングを開始します。このメッセージはREADY_FOR_TOKENメッセージを受信した後に送信する必要があります。

このメッセージは同じiframeに複数回送信することができ、その場合iframeは新しいトークンとパラメータで内部的にリロードされます。

クライアントサイドオプションのparamsフィールドを使用すると、サーバーサイドで固定化やデフォルト設定されていないパラメータの初期値を設定できます。これは、アプリケーション側でパラメータ入力欄を提供したい場合に便利です。

iframeからのメッセージ

type
description

READY_FOR_TOKEN

ノートブックがトークンを受信する準備ができたことを通知します。

PARAM_CHANGED

ユーザーがノートブック内のパラメータを変更するたびに送信されます。

EXECUTE_SQLS_TRIGGERED

ノートブック内で「すべて実行」が実行されたときに送信されます。

よくある質問

トークン発行時に "Missing param: xxx" エラーが出る場合

  • トークン発行時には、全てのサーバーサイドパラメータをリクエスト内に含める必要があります

  • "xxx" というパラメータIDのパラメータがリクエスト内に含まれていない場合、このエラーが発生します

SET_TOKENメッセージの送信時に "The following parameters must be set by the server" エラーが出る

  • SET_TOKENの際にサーバーサイドパラメータを変更しようとしています

  • サーバーサイドパラメータを変更するためには、新しいトークン発行が必要です

SET_TOKENメッセージを送信してもパラメータが変更されない場合

  1. 送信したパラメータがサーバーサイドパラメータとして指定されていないか確認

  2. param_valueが正しいJSON文字列形式か確認

  3. param_idが実在するパラメータIDと一致しているか確認

最終更新

役に立ちましたか?