メインコンテンツへスキップ

接続 UI (DidConnect)

DidConnect コンポーネントは、さまざまな分散型 ID (DID) 接続フローを処理するための、事前構築済みの包括的な UI ソリューションです。ログイン、認証、プロファイル要求などのアクションのための使いやすいインターフェースを提供し、複数の接続方法を標準でサポートします。

これは @arcblock/did-connect-react ライブラリの視覚的な中心要素として機能し、セッション管理とリアルタイムのステータス更新の複雑さを抽象化します。このコンポーネントは、DID Wallet ユーザー向けの QR コードを表示し、ソーシャルログイン (OAuth) やパスワードレス認証 (Passkeys) などの代替ログインオプションを提供します。

DidConnect を使用する前に、アプリケーションが SessionProvider でラップされ、全体的なセッション状態が管理されていることを確認してください。

基本的な使用法

DidConnect を使用するには、インポートしていくつかの必須プロパティを提供する必要があります。コンポーネントは通常、その可視性を決定する状態変数によって制御されます。

DID Connect の例

jsx
import React, { useState } from 'react';
import axios from 'axios';
import DidConnect from '@arcblock/did-connect-react/lib/Connect';

function App() {
  const [isConnectOpen, setConnectOpen] = useState(false);

  const handleClose = () => setConnectOpen(false);
  const handleSuccess = () => {
    // ログイン成功時の処理、例:ユーザーをリダイレクトする
    window.location.href = '/profile';
  };

  return (
    <div>
      <button onClick={() => setConnectOpen(true)}>Login with DID</button>
      {isConnectOpen && (
        <DidConnect
          action="login"
          checkFn={axios.get}
          onClose={handleClose}
          onSuccess={handleSuccess}
          messages={{
            title: 'Scan to Sign In',
            scan: 'Scan QR code with your DID Wallet',
            confirm: 'Confirm login on your DID Wallet',
            success: 'You have successfully signed in!',
          }}
        />
      )}
    </div>
  );
}

export default App;

この例では、「Login with DID」ボタンをクリックすると isConnectOpen の状態が true に設定され、DidConnect コンポーネントがモーダルダイアログとしてレンダリングされます。checkFn プロパティは非常に重要です。これは、コンポーネントがバックエンドからセッションステータスをポーリングするために使用する関数です。

仕組み

DidConnect コンポーネントは、接続オプションの表示から最終的な成功またはエラー状態の処理まで、ユーザー認証フロー全体を調整します。

Connection UI (DidConnect)

コンポーネントのプロパティ

DidConnect コンポーネントは、プロパティを通じて高度に設定可能です。以下に、利用可能なオプションの詳細なリストを示します。

コア設定

これらのプロパティは、コンポーネントの基本機能を設定するために不可欠です。

  • action string (required) — 接続の目的を定義します。login、claim、sign など。この文字列は、必要なアクションを決定するためにバックエンドに渡されます。
  • checkFn function (required) — バックエンドにセッションステータスの更新をポーリングするために使用される関数です。axios.get のような API リクエストを行う関数である必要があります。
  • baseUrl string (default: '') — API エンドポイントのベース URL です。API が別のドメインにある場合は、ここで指定します。
  • prefix string (default: /api/did) — バックエンド上の DID Connect API エンドポイントの URL プレフィックスです。

動作制御

これらのプロパティは、接続プロセスの動作を制御します。

  • enabledConnectTypes string[] (default: ["web", "mobile", ...]) — 表示する接続方法を指定する文字列の配列です。可能な値には web、mobile、github、google、apple、passkey などがあります。
  • passkeyBehavior 'none' | 'both' | 'only-existing' | 'only-new' (default: 'none') — Passkey 認証の動作を制御します。none は無効にし、both は新しいパスキーの作成と既存のパスキーの使用を許可し、only-existing は既存のパスキーに制限し、only-new は新しいパスキーの作成を強制します。
  • allowWallet boolean (default: true) — false の場合、QR コードとモバイルウォレットの接続オプションは非表示になります。
  • autoConnect boolean (default: true) — true の場合、コンポーネントは同じデバイスから以前に確立された接続を自動的に使用しようとします。
  • forceConnected boolean | string (default: true) — true の場合、ユーザーはすでにログインしているのと同じ DID で接続する必要があります。DID 文字列が提供された場合、ユーザーはその特定の DID で接続する必要があります。
  • saveConnect boolean (default: true) — true の場合、成功した接続情報が将来の autoConnect の試行のためにローカルに保存されます。
  • useSocket boolean (default: true) — true の場合、リアルタイムのステータス更新に WebSocket を使用しようと試み、接続が確立できない場合はポーリングにフォールバックします。

UI のカスタマイズ

DidConnect コンポーネントの外観とテキストをカスタマイズします。

  • mode 'dialog' | 'drawer' | 'page' (default: 'dialog') — コンポーネントの表示方法を決定します。dialog は中央に配置されたモーダルとして表示し、drawer はボトムシートとして(モバイルで)表示し、page はドキュメントフローに直接埋め込みます。
  • messages object — UI に表示されるテキストをカスタマイズするためのオブジェクトです。
    • title string — 上部にあるメインタイトル。
    • scan string — タイトルの下にある説明テキスト。
    • confirm string — QR コードがスキャンされた後に表示されるテキスト。
    • success string | ReactNode — 接続成功時に表示されるメッセージ。
    • error string — エラー時に表示されるメッセージ。
  • hideCloseButton boolean (default: false) — true の場合、右上隅の閉じるボタン(X)が非表示になります。
  • extraContent ReactNode (default: null) — カスタムの React コンポーネントや要素を UI に挿入できます。通常はメインタイトル/説明の下に表示されます。
  • customItems ReactNode[] (default: []) — 接続方法のリストに追加されるカスタム React ノードの配列です。
  • disableSwitchApp boolean (default: false) — 統一ログインサイト群を使用している場合、このプロパティはログインプロセス中にユーザーがグループ内の異なるアプリケーションを切り替えるのを防ぎます。
  • webWalletUrl string — 「Web Wallet で接続」オプションに使用される Web ベースの DID Wallet の URL です。デフォルトでは、公式の ArcBlock Web Wallet になります。

コールバック

接続ライフサイクルのさまざまな段階で呼び出される関数です。

  • onClose function (required) — ユーザーが DidConnect ダイアログを閉じたとき(例:閉じるボタンまたはモーダルの外側をクリックしたとき)に実行されるコールバック関数です。
  • onSuccess function (required) — 接続が成功したときに実行されるコールバック関数です。セッションデータが引数として渡されます。
  • onError function — プロセス中にエラーが発生したときに実行されるコールバック関数です。エラーオブジェクトまたはメッセージが引数として渡されます。
  • onRecreateSession function — セッションをリセットする必要があるとき(例:タイムアウト後やユーザーが手動でキャンセルして再試行したとき)に呼び出されるコールバック関数です。

次のステップ

DidConnect コンポーネントをしっかりと理解したことで、堅牢な認証体験を構築できるようになります。接続 UI をプログラムでより詳細に制御するには、useConnect フック を調べてください。これにより、アプリケーションのどこからでも DidConnect モーダルを開閉できます。