機能
- シンプルなAPI - 使いやすいメソッドを備えたシングルトンパターン
- 柔軟な連携 - UniLink URLを直接使うことも、バックエンド経由でセッションを作成することも可能
- レスポンシブ - デスクトップとモバイルのブラウザで動作
- カスタマイズ可能 - スタイルと動作を調整できる設定オプション
- 複数のフォーマット - ESM、CommonJS、UMDのビルドを提供
- TypeScriptサポート - 完全な型定義を同梱
- モーダルモードとインラインモード - モーダルオーバーレイとインライン埋め込みから選択可能
- イベントコールバック - 認証の進行状況をリアルタイムで通知するイベント(開始、ステップ完了、終了)
- 状態管理 - SDKの状態を監視してカスタムUIを構築可能
インストール
NPM/Yarn
CDN (UMD)
インストール済みバージョンの確認
インストール済みのリリースについては、引き続きパッケージマネージャーの情報が信頼できる情報源です。0.3.1以降、このエクスポートはすべてのJavaScript形式(ESM、CommonJS、UMD、minified UMD)とTypeScript宣言において、パッケージのバージョンから生成されるため、常にインストール済みのリリースと一致します。
0.3.0以前では、インストールされているバージョンにかかわらず、このエクスポートは0.2.1を返します。これらのリリースでは、代わりにnpm listまたはロックファイルを使用してください。
Vanilla JavaScript
ESモジュール / TypeScript
スクリプトタグ (UMD)
フレームワーク別の例
SDK Webサンプル
React、Angular、Svelte、Next.js、Nuxt、Vueなど。各フレームワークのサンプルとドキュメントを掲載しています。
連携方法
SDKの連携方法は2つあります。方法1: UniLink URL (最もシンプル)
Didit ConsoleからワークフローのUniLink URLを直接使用します。バックエンドは不要です。方法2: バックエンドセッション (本番環境で推奨)
バックエンドがDidit APIでセッションを作成し、ホスト型検証ページのURLを返します。この方法では、vendor_data、セッションごとのcallback、metadataを制御でき、ユーザーがフロントエンドに到達する前にセッションを作成できます。
詳しくはCreate Session APIリファレンスを参照してください。
バックエンド(Node.js / Express)
セッション作成レスポンスのフィールド名は
urlです(Create Session OpenAPIスキーマを参照)。これをstartVerification({ url })にそのまま渡してください。設定
カメラオプション
カメラオプションを使用するには、
@didit-protocol/sdk-web0.4.0以降が必要です。defaultLivenessCamera: 'back'を設定します。キオスク端末で使う場合や、オペレーターがデバイスを持って認証対象者に向ける場合などに使います。
- 指定できるレンズの値は
'front'と'back'です。それ以外の値は無視されます。ブール値ではない切り替えボタンのフラグも同様に無視されます。 - 要求されたカメラがないデバイスでは、搭載されているカメラがそのまま使われます。たとえば、
'back'を指定されたノートPCでもWebカメラが使用されます。カメラが1台のみのデバイスでは、フラグの設定にかかわらず切り替えボタンは表示されません。 - ライブネスのオプションは、パッシブライブネスチェックに適用されます。アクティブライブネスには影響しません。
- SDKは、これらのオプションを認証URLのクエリパラメーター
document_camera、liveness_camera、document_camera_switch、liveness_camera_switchとして認証ページに渡します。SDKを介さずに認証URLを直接開く場合は、これらを自分で設定してください。クエリ文字列のないURLには?liveness_camera=backを、すでにパラメーターがあるURLには&liveness_camera=backを付加します。URLAPIで設定すれば、どちらの場合にも対応できます。
イベントの送信
DiditSdk.shared.submitEvent()は、エンドユーザーのイベント(サインアップ、ログイン、ログイン失敗、ログアウト、パスワードリセット、MFA、デバイス変更)を、Diditのイベントモニタリング用にキューに追加します。
バックエンドでその人物用のモニタリングトークンを発行すると、SDKがデバイスフィンガープリントとともにイベントをバッチで送信します。
APIキーは決してブラウザに渡さないでください。
モーダルのサイズとスクロール
以下のサイズ調整の動作には0.3.1以降が必要です。0.3.0以前では、高さの低いデスクトップや横向きのビューポートで、認証フローの一部が切れて表示されることがあります。
dvhを使用し、サポート対象の古いブラウザではvhにフォールバックします。幅540px以下では、モーダルが表示中のビューポート全体に表示されます。閉じるボタンと終了確認は、モーダル内に表示されたままです。
リニューアルされた認証フロー
このセクションの内容はすべてバージョン0.5.0から適用されますが、このバージョンはまだ公開されていません。アップグレードするまで、モーダルは上記のサイズのままです。
didit:layoutメッセージでレイアウトを通知すると、モーダルはリニューアルされた認証フローに合わせてサイズを調整します。
- 初期サイズ(バージョン0.5.0以降): ページがレイアウトを通知するまでの間、および通知しないページでは、モーダルは従来の最大サイズである500px×700pxのままです。高さの低いウィンドウにも引き続き収まり、540px以下では全画面で表示されます。
- 閉じるボタン(バージョン0.5.0以降): ページのトップバーの上に表示される44pxの円形ボタンです。ページのライトテーマまたはダークテーマに合わせて表示され、右から左に書く言語では左側に移動します。
- 埋め込みモード(バージョン0.5.0以降): 従来どおり、ホスト要素全体に表示されます(埋め込みモードを参照)。
- 認証URL(バージョン0.5.0以降): SDKは
sdk_presentation(modalまたはembedded)を追加します。モーダルの場合はsdk_close_button(showCloseButtonに従ってtrueまたはfalse)も追加します。これにより、ページは自身がどのように表示されているかを把握できます。 - イベント(バージョン0.5.0以降): SDKは
didit:layoutを自身で処理し、onEventには渡しません。
埋め込みモード
埋め込みモードには、モーダルの500px×700pxという上限は適用されません。SDKはホスト要素のコンテンツボックス全体に表示されます。そのため、ホスト要素には明示的な高さを指定するか、ほかの方法で高さが決まるようにしてください。認証結果
SDKは3種類の結果を返します。完了
認証フローが終了しました(承認済み、保留中、または却下)。TypeScriptの型では
'Approved' | 'Pending' | 'Declined'と宣言されていますが、値にはホスト型フローのセッションステータスがそのまま渡されるため、In Reviewなどほかのステータスを受け取る場合もあります。Pendingは、フローからステータスが報告されなかった場合にSDKが使うフォールバック値です。statusは目安として扱い、正式な判定にはWebhookを利用してください。キャンセル
ユーザーが認証モーダルを閉じました。sessionIdがすでに判明している場合はsessionが含まれます(iframeがセッションIDを報告する前にユーザーがキャンセルした場合はundefinedになることがあります)。
失敗
認証中にエラーが発生しました。状態管理
独自のUIでSDKの状態を監視できます。APIリファレンス
DiditSdk.shared
SDKのシングルトンインスタンスです。メソッド
プロパティ
コールバック
詳細なイベント
onEventコールバックで認証の進行状況を追跡できます。
イベントリファレンス
接続が切れた場合
ユーザーの接続が切断されると、検証ページはステップを読み込み中のままにせず、フロー上に「No internet connection」画面を表示します。 バックグラウンドで確認を続け、Didit に再び接続できるようになるとすぐにこの画面を自動的に閉じます。ユーザーは中断したステップから続行できます。 SDKのモーダルまたはiframe内では、この画面にExit Verificationも表示されます。これを選択すると、ページはerror: "network_error"を含むdidit:errorを送信し、続いてdidit:cancelledを送信します。SDKはモーダルを閉じ、type: "cancelled"でonCompleteを呼び出します。
バージョン0.5.0以降、ページのdidit:layoutメッセージはモーダルのサイズを調整するもので、onEventには届きません。代わりに独自のiframeでページを埋め込む場合は、didit:layoutでiframeのサイズを設定するを参照してください。
ステップの値
stepフィールドには次のいずれかが入ります。
document_selection- 書類の種類の選択document_front- 書類の表面document_back- 書類の裏面face- 顔・ライブネス検証email- メールアドレス認証phone- 電話番号検証poa- 住所証明questionnaire- アンケートのステップ
チャネルの値
code_sentのchannelフィールドには次の値が入ります。
email- メールでコードを送信sms- SMSでコードを送信whatsapp- WhatsAppでコードを送信
コードの長さ
code_sentのcodeSizeフィールドはOTPコードの桁数(例: 4桁または6桁)を示します。