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

## 設定方法

### 署名付き埋め込みの準備

* APIキーとAPIシークレットの準備
  * `ワークスペース設定`を開き、`APIキー`メニューをクリックします。
  * `APIキーを追加`ボタンをクリックして新しいAPIキーを作成します。
  * APIキーとAPIシークレット（後でAPIコールに使用します）をメモしておきます。
* ノートブックを開く
  * 共有したいノートブックを開きます。
  * ヘッダーの`共有`ボタンをクリックし、`署名付き埋め込み`タブを選択します。
* 署名付き埋め込みの公開
  * 公開対象のページの選択や、公開時のオプションを設定します。
  * `公開`ボタンをクリックします。
* 署名付き埋め込みの設定
  * `権限を付与するAPIキー`セクションで使用するAPIキーを追加します。
  * サーバーサイドでのトークン発行時に値を指定するパラメータを、`サーバーサイドパラメータ`セクションで設定します。

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

* トークンを発行するには以下のAPIを使用します
  * APIを呼び出すために必要な引数は `セットアップガイド`タブで確認できます。
  * **APIシークレット**が外部に漏れないようにするため、サーバーサイドでAPIコールを実行してください。
  * ユーザーセッションごとにトークンを発行し、再利用しないでください（デフォルトでは1時間後に期限切れになります）。

{% openapi src="<https://api.codatum.com/api/notebook/spec.json>" path="/api/notebook/issueToken" method="post" %}
<https://api.codatum.com/api/notebook/spec.json>
{% endopenapi %}

### フロントエンドへの組み込み

* [Codatum Embed SDK](https://github.com/codatum/codatum-embed-js) を使ってフロントエンドに組み込みます
  * 組み込みに必要な `embedUrl` は `セットアップガイド`タブで確認できます
  * `tokenProvider` には、サーバーサイドでトークンを発行するAPIを指定します
  * その他の設定可能な全オプションに関しては、[SDKのREADME](https://github.com/codatum/codatum-embed-js/tree/main/packages/embed#readme)を参照してください。

## 付録

### よくある質問

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

* トークン発行時には、全てのサーバーサイドパラメータをリクエスト内に含める必要があります
* "xxx" というパラメータIDのパラメータがリクエスト内に含まれていない場合、このエラーが発生します

#### クライアントサイドパラメータの送信時に "The following parameters must be set by the server" エラーが出る

* クライアントサイドパラメータの送信時にサーバーサイドパラメータを変更しようとしています
* サーバーサイドパラメータを変更するためには、新しいトークン発行が必要です

#### クライアントサイドパラメータの送信時にパラメータが変更されない場合

* 送信したパラメータがサーバーサイドパラメータとして指定されていないか確認してください
* `param_value`が正しいJSON文字列形式か確認してください
* `param_id`が実在するパラメータIDと一致しているか確認してください
