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

概要

@arcblock/did-connect-reactライブラリは、分散型アイデンティティ(DID)機能をウェブアプリケーションにシームレスに統合するために設計された、包括的なReactコンポーネントとフックのセットを提供します。ArcBlockのDID Walletを使用したユーザー認証とセッショ

@arcblock/did-connect-reactライブラリは、分散型アイデンティティ(DID)機能をウェブアプリケーションにシームレスに統合するために設計された、包括的なReactコンポーネントとフックのセットを提供します。ArcBlockのDID Walletを使用したユーザー認証とセッション管理のプロセスを簡素化し、従来のログインシステムに代わる、安全で使いやすい代替手段を提供します。

このライブラリは、すぐに使える完全なソリューションが必要な場合でも、認証フローに対するきめ細かな制御が必要な場合でも、柔軟で使いやすいように構築されています。

主な機能

完全な接続UI

`DidConnect`コンポーネントを含み、QRコードのスキャンと接続プロセス全体を処理するための、事前に構築されたカスタマイズ可能なモーダルを提供します。

シームレスなセッション管理

`SessionProvider`と`useSession`フックを活用して、アプリケーション全体でユーザーのログイン状態、セッション、プロファイルデータを簡単に管理します。

柔軟なプログラムによる制御

`useConnect`のようなフックを使用して、接続モーダルをプログラムで開閉・管理し、ユーザーエクスペリエンスを完全に制御できます。

豊富なUIツールキット

`Avatar`、`Address`、`Button`などの補足的なUIコンポーネントのコレクションで、ユーザーのアイデンティティ情報を一貫して表示します。

コアアーキテクチャ

このライブラリは、ユーザーのセッション状態を管理する中央のSessionProviderを中心に展開します。ButtonのようなUIコンポーネントはDidConnectモーダルをトリガーでき、これはユーザーのDID Walletとの安全なQRコードベースの対話を処理します。接続が完了すると、セッションが更新され、アプリケーションのUIがそれに応じて反応します。

@arcblock/did-connect-reactはクライアントサイドのライブラリであり、認証ロジックを処理するために対応するバックエンドサービスが必要であることに注意することが重要です。このサービスは、Node.js用の@arcblock/did-connect-jsライブラリを使用して構築する必要があります。

Overview

インストール

開始するには、yarnまたはnpmを使用してライブラリをプロジェクトに追加します。

インストール

shell
# yarnを使用
yarn add @arcblock/did-connect-react

# npmを使用
npm install @arcblock/did-connect-react

仕組み:クイックルック

以下は、ログインフローを設定するための最小限の例です。アプリケーションはSessionProviderでラップされ、Buttonを使用してDidConnectモーダルを切り替えます。

App.js

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

const webWalletUrl = 'https://web.abtwallet.io/';

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

  const handleClose = () => setConnectOpen(false);
  const handleSuccess = () => {
    // ログイン成功後にリダイレクトまたはUIを更新
    window.location.reload();
  };

  return (
    <SessionProvider serviceHost="/">
      <div className="main-content">
        <SessionConsumer>
          {({ session }) => {
            if (session.loading) {
              return <div>セッションを読み込み中...</div>;
            }

            return session.user ? (
              <div>
                <h2>ようこそ、{session.user.did}さん!</h2>
                <button onClick={() => session.logout()}>ログアウト</button>
              </div>
            ) : (
              <Button onClick={() => setConnectOpen(true)}>ウォレットを接続</Button>
            );
          }}
        </SessionConsumer>
      </div>

      <DidConnect
        popup
        open={isConnectOpen}
        action="login"
        checkFn={axios.get}
        onClose={handleClose}
        onSuccess={handleSuccess}
        messages={{
          title: 'マイアプリにログイン',
          scan: 'DID WalletでQRコードをスキャンしてください',
          confirm: 'ウォレットでログインを確認してください',
          success: '正常にサインインしました!',
        }}
        webWalletUrl={webWalletUrl}
      />
    </SessionProvider>
  );
}

export default App;

この例は、わずかなコンポーネントでユーザーセッションを管理し、ログインプロセスをトリガーする方法を示しています。

次のステップ

これでライブラリの基本的な理解ができたので、さらに深く掘り下げる準備ができました。

はじめに

ステップバイステップのガイドに従って、DID Connectをゼロから独自のアプリケーションに統合します。

構築を開始