オンラインコース、有料ニュースレター、音声プログラム、デジタルダウンロードを独自のフロントエンドで運営する場合、最も維持が困難なのは「購入者のログイン」「利用権限の確認(誰がどのユニットにアクセスできるか)」「プライベート動画/PDFの不正コピー防止署名」「デバイス間での進捗同期」です。
Kanorioはこれらの基盤機能を2つのレイヤーに集約しており、カスタマイズのニーズに合わせて選択できます。
<kanorio-*> 要素 (@kanorio/elements、最速): 単一のタグやReactコンポーネントを使用し、Kanorioの組み込みパスワードレスログイン、公開カリキュラム、保護されたプレイヤーを外部サイトに直接導入します。https://{your-site}/api/v1/customer/*): 独自のUIを使用して、パスワードレス認証の呼び出し、購入済みコンテンツのツリー構造の取得、600秒間有効な署名付きURLへの交換、進捗の報告を行います。完全仕様リファレンス (SSOT):
- すべての顧客エンドポイント、パラメータ、レスポンス構造: Customer APIリファレンス
- コンポーネント属性、カスタムイベント、CSS変数: Kanorio Elementsリファレンス
@kanorio/elements の埋め込み (推奨)@kanorio/elements は標準的なWeb Components(あらゆるフレームワークやプレーンなHTMLと互換性あり)とReactコンポーネントを提供し、58の言語対応とライト/ダークテーマ変数を備えています:
| コンポーネント名 | 購入者のログインが必要 | 目的 |
|---|---|---|
<kanorio-curriculum> | 不要(公開) | 商品販売ページに配置し、GET /api/v1/products/{slug} を通じてカリキュラムの概要(章、ユニットタイプ、所要時間)を自動的に取得します。また、訪問者が「無料プレビュー」と設定されたユニットを試聴できるようにします。 |
<kanorio-login> | ログインポータル | メールベースの6桁の認証コードおよびマジックリンクによるパスワード不要のログイン機能を提供します。認証が完了すると、購入者固有のBearerセッションを発行し、kanorio:login イベントをトリガーします。 |
<kanorio-unit> | 必要(プレビューユニットを除く) | 学習およびコンテンツ提供のための包括的で保護されたインターフェースです。章のサイドバー、動画・音声プレイヤー、PDFリーダー、ファイルダウンロードカード、ロック中や公開待ちコンテンツの通知を含み、視聴時間や完了ステータスをサーバーへ自動的に報告します。 |
<kanorio-media>/<kanorio-lightbox> | 不要(公開) | 公開メディアプレイヤーおよび画像ライトボックスです。ズーム、キーボード操作、画像の保存保護に対応しています。 |
import { KanorioProvider, KanorioLogin, KanorioUnit } from "@kanorio/elements"; import "@kanorio/elements/elements.css"; export function CoursePlayerPage() { return ( <KanorioProvider siteUrl="https://s-k4m9x2p7q8w3.kanorio.com" locale="en" theme="auto"> <KanorioLogin siteName="My Online Academy" /> <KanorioUnit deliverable="react-masterclass" onProgress={(e) => console.log("Progress updated:", e)} /> </KanorioProvider> ); }
独自のカリキュラムや学習インターフェースをゼロから設計したい場合は、ブラウザから直接(「サイト設定 › 開発者」の「許可されたオリジン」にフロントエンドドメインを追加した後)またはサーバーからCustomer APIを呼び出すことができます:
POST /api/v1/customer/auth/challenge を呼び出し、6桁の確認コードとログインリンクを送信します。POST /api/v1/customer/auth/verify を呼び出し、購入者の sessionToken (knr_cat_*、サイトと連絡先に二重紐付け) を取得します。Authorization: Bearer knr_cat_... を含め、GET /api/v1/customer/deliverables を呼び出し、購入者が有効なを持つすべてのコンテンツをリストアップします。GET /api/v1/customer/deliverables/{key} を呼び出し、完全なチャプターツリー、各ユニットのロック解除状態、現在の視聴進捗を取得します。POST /api/v1/customer/units/{id}/open を呼び出し(サーバーが利用権限を確認し、releaseAt/releaseAfterDays 条件が満たされているかチェックします)、600秒間有効なプライベートメディア署名付きURLを受け取ります。POST /api/v1/customer/progress を呼び出し、positionSeconds を報告します。サーバーはコンテンツのルールに基づいて完了を判定し、deliverables.progress.completed Webhookをトリガーします。ヘッドレスフロントエンドを設計する際は、Kanorioがこれら3種類の権利を厳密に分離していることに注意してください:
<kanorio-unit> を通じて確認されます。knr_pat_) にアクセスするための権限。「コースを閲覧できること」は「カリキュラムを変更できること」と決して同義ではありません。製品ページに、return_to URLを含むKanorioサイトのチェックアウトページへのリンクを配置してください。購入者が支払いを完了すると、Kanorioは製品にリンクされたコンテンツに基づいて自動的に「利用権限」を付与し、領収書とアクセスメールを送信し、購入者を外部フロントエンドにリダイレクトしてすぐに視聴を開始できるようにします。