@arcblock/did-connect-react 3.1.41 → 3.1.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/.aigne/doc-smith/config.yaml +83 -0
  2. package/.aigne/doc-smith/output/structure-plan.json +197 -0
  3. package/.aigne/doc-smith/upload-cache.yaml +168 -0
  4. package/docs/_sidebar.md +18 -0
  5. package/docs/advanced-authentication-methods.ja.md +261 -0
  6. package/docs/advanced-authentication-methods.md +261 -0
  7. package/docs/advanced-authentication-methods.zh-TW.md +261 -0
  8. package/docs/advanced-authentication-methods.zh.md +261 -0
  9. package/docs/advanced-utilities.ja.md +132 -0
  10. package/docs/advanced-utilities.md +132 -0
  11. package/docs/advanced-utilities.zh-TW.md +132 -0
  12. package/docs/advanced-utilities.zh.md +132 -0
  13. package/docs/advanced.ja.md +95 -0
  14. package/docs/advanced.md +95 -0
  15. package/docs/advanced.zh-TW.md +95 -0
  16. package/docs/advanced.zh.md +95 -0
  17. package/docs/api-reference.ja.md +178 -0
  18. package/docs/api-reference.md +178 -0
  19. package/docs/api-reference.zh-TW.md +178 -0
  20. package/docs/api-reference.zh.md +178 -0
  21. package/docs/core-components-did-connect.ja.md +214 -0
  22. package/docs/core-components-did-connect.md +213 -0
  23. package/docs/core-components-did-connect.zh-TW.md +214 -0
  24. package/docs/core-components-did-connect.zh.md +213 -0
  25. package/docs/core-components-session-provider.ja.md +239 -0
  26. package/docs/core-components-session-provider.md +239 -0
  27. package/docs/core-components-session-provider.zh-TW.md +239 -0
  28. package/docs/core-components-session-provider.zh.md +239 -0
  29. package/docs/core-components.ja.md +16 -0
  30. package/docs/core-components.md +16 -0
  31. package/docs/core-components.zh-TW.md +16 -0
  32. package/docs/core-components.zh.md +16 -0
  33. package/docs/getting-started.ja.md +138 -0
  34. package/docs/getting-started.md +138 -0
  35. package/docs/getting-started.zh-TW.md +138 -0
  36. package/docs/getting-started.zh.md +138 -0
  37. package/docs/hooks-use-connect.ja.md +214 -0
  38. package/docs/hooks-use-connect.md +214 -0
  39. package/docs/hooks-use-connect.zh-TW.md +214 -0
  40. package/docs/hooks-use-connect.zh.md +214 -0
  41. package/docs/hooks-use-did.ja.md +107 -0
  42. package/docs/hooks-use-did.md +107 -0
  43. package/docs/hooks-use-did.zh-TW.md +107 -0
  44. package/docs/hooks-use-did.zh.md +107 -0
  45. package/docs/hooks-use-oauth-passkey.ja.md +188 -0
  46. package/docs/hooks-use-oauth-passkey.md +188 -0
  47. package/docs/hooks-use-oauth-passkey.zh-TW.md +188 -0
  48. package/docs/hooks-use-oauth-passkey.zh.md +188 -0
  49. package/docs/hooks.ja.md +23 -0
  50. package/docs/hooks.md +23 -0
  51. package/docs/hooks.zh-TW.md +23 -0
  52. package/docs/hooks.zh.md +23 -0
  53. package/docs/overview.ja.md +159 -0
  54. package/docs/overview.md +159 -0
  55. package/docs/overview.zh-TW.md +159 -0
  56. package/docs/overview.zh.md +160 -0
  57. package/docs/ui-components-address.ja.md +121 -0
  58. package/docs/ui-components-address.md +121 -0
  59. package/docs/ui-components-address.zh-TW.md +121 -0
  60. package/docs/ui-components-address.zh.md +121 -0
  61. package/docs/ui-components-avatar.ja.md +65 -0
  62. package/docs/ui-components-avatar.md +65 -0
  63. package/docs/ui-components-avatar.zh-TW.md +65 -0
  64. package/docs/ui-components-avatar.zh.md +65 -0
  65. package/docs/ui-components-button.ja.md +99 -0
  66. package/docs/ui-components-button.md +99 -0
  67. package/docs/ui-components-button.zh-TW.md +99 -0
  68. package/docs/ui-components-button.zh.md +99 -0
  69. package/docs/ui-components-logo.ja.md +52 -0
  70. package/docs/ui-components-logo.md +52 -0
  71. package/docs/ui-components-logo.zh-TW.md +52 -0
  72. package/docs/ui-components-logo.zh.md +52 -0
  73. package/docs/ui-components.ja.md +57 -0
  74. package/docs/ui-components.md +57 -0
  75. package/docs/ui-components.zh-TW.md +57 -0
  76. package/docs/ui-components.zh.md +57 -0
  77. package/glossary.md +1 -0
  78. package/lib/package.json.js +1 -1
  79. package/package.json +5 -5
  80. package/src/Session/hooks/use-federated.js +3 -0
  81. package/src/Session/libs/federated.js +3 -0
@@ -0,0 +1,138 @@
1
+ # はじめに
2
+
3
+ このガイドでは、`@arcblock/did-connect-react` を使用して、Reactアプリケーションに分散型ID(DID)認証を統合するための基本的な手順を説明します。わずか数分で、完全に機能するログインおよびログアウトフローを実装できます。
4
+
5
+ ### 前提条件
6
+
7
+ 開始する前に、開発環境が次の基準を満たしていることを確認してください:
8
+
9
+ - Reactプロジェクトがセットアップされていること。
10
+ - 認証リクエストを処理するBlocklet Serverインスタンスが実行されていること。このライブラリは、Blocklet Serverをバックエンドとしてシームレスに動作するように設計されています。
11
+
12
+ ## ステップ1:ライブラリをインストールする
13
+
14
+ まず、`@arcblock/did-connect-react` パッケージをプロジェクトに追加します。npmまたはyarnのいずれかを使用できます。
15
+
16
+ ```bash npmでインストール icon=logos:npm
17
+ npm install @arcblock/did-connect-react
18
+ ```
19
+
20
+ ```bash yarnでインストール icon=logos:yarn
21
+ yarn add @arcblock/did-connect-react
22
+ ```
23
+
24
+ ## ステップ2:SessionProviderをセットアップする
25
+
26
+ `SessionProvider`はライブラリの中心です。これは、ユーザーのセッション状態(ログイン状態やユーザー情報など)を管理し、その内部でラップされたすべてのコンポーネントで利用可能にするコンテキストプロバイダーです。アプリケーションのルート、例えば`App.js`ファイルに配置する必要があります。
27
+
28
+ Blocklet上に構築されたアプリケーションでは、`createAuthServiceSessionContext`ファクトリ関数を使用してプロバイダーを初期化することが推奨されます。
29
+
30
+ ```javascript App.js icon=logos:react
31
+ import React from 'react';
32
+ import { createAuthServiceSessionContext } from '@arcblock/did-connect-react/lib/Session';
33
+ import Home from './Home'; // このコンポーネントは次のステップで作成します
34
+
35
+ // createAuthServiceSessionContextはBlocklet環境に最適化されています
36
+ const { SessionProvider } = createAuthServiceSessionContext();
37
+
38
+ function App() {
39
+ return (
40
+ // serviceHostプロパティは、バックエンド認証サービスのベースパスを指します。
41
+ // 標準的なBlockletの場合、これは通常blockletのプレフィックスまたは'/'です。
42
+ <SessionProvider serviceHost="/">
43
+ <Home />
44
+ </SessionProvider>
45
+ );
46
+ }
47
+
48
+ export default App;
49
+ ```
50
+
51
+ ## ステップ3:ログインとログアウトを実装する
52
+
53
+ 次に、ユーザーがログインおよびログアウトできるコンポーネントを作成しましょう。Reactの`useContext`フックと`SessionContext`を使用して、セッションデータと関数にアクセスできます。
54
+
55
+ `session`オブジェクトは、現在の`user`、`loading`状態、そして`login()`や`logout()`のような関数など、必要なものすべてを提供します。
56
+
57
+ ```javascript Home.js icon=logos:react
58
+ import React, { useContext } from 'react';
59
+ import { SessionContext } from '@arcblock/did-connect-react/lib/Session';
60
+ import ConnectButton from '@arcblock/did-connect-react/lib/Button';
61
+ import Button from '@arcblock/ux/lib/Button'; // 汎用ボタン
62
+ import CircularProgress from '@mui/material/CircularProgress';
63
+
64
+ function Home() {
65
+ // セッションコンテキストにアクセス
66
+ const { session } = useContext(SessionContext);
67
+
68
+ // アクセスしやすいように分割代入
69
+ const { user, loading, login, logout } = session;
70
+
71
+ // セッションが初期化されている間、ローディングインジケーターを表示
72
+ if (loading) {
73
+ return <CircularProgress />;
74
+ }
75
+
76
+ return (
77
+ <div style={{ padding: '20px', textAlign: 'center' }}>
78
+ {user ? (
79
+ // ユーザーがログインしている場合は、DIDとログアウトボタンを表示
80
+ <div>
81
+ <h1>ようこそ!</h1>
82
+ <p>あなたのDID: {user.did}</p>
83
+ <Button variant="contained" color="secondary" onClick={logout}>
84
+ ログアウト
85
+ </Button>
86
+ </div>
87
+ ) : (
88
+ // ログインしていない場合は、ログインボタンを表示
89
+ <div>
90
+ <h1>サインインしてください</h1>
91
+ <ConnectButton onClick={() => login()}>
92
+ ウォレットに接続
93
+ </ConnectButton>
94
+ </div>
95
+ )}
96
+ </div>
97
+ );
98
+ }
99
+
100
+ export default Home;
101
+ ```
102
+
103
+ ユーザーが`ConnectButton`をクリックすると、`login()`関数が呼び出されます。この関数は、ユーザーがDID WalletでスキャンするためのQRコードを表示するDID Connectモーダルを開き、認証プロセス全体を管理します。
104
+
105
+ ## ステップ4:ユーザーデータにアクセスする
106
+
107
+ ユーザーが正常にログインすると、`session.user`オブジェクトが入力されます。このオブジェクトには、ユーザーのDID Walletから取得したプロファイル情報が含まれています。
108
+
109
+ コンテキストによって提供される`session`オブジェクトは、ユーザーの認証状態への主要なインターフェースです。以下にその主要なプロパティを示します:
110
+
111
+ <x-field-group>
112
+ <x-field data-name="user" data-type="object | null" data-desc="認証されたユーザーオブジェクト。ユーザーがログインしていない場合は`null`です。">
113
+ <x-field data-name="did" data-type="string" data-desc="ユーザーの分散型識別子(DID)。"></x-field>
114
+ <x-field data-name="fullName" data-type="string" data-desc="ウォレットプロファイルからのユーザーのフルネーム。"></x-field>
115
+ <x-field data-name="email" data-type="string" data-desc="ウォレットプロファイルからのユーザーのメールアドレス。"></x-field>
116
+ </x-field>
117
+ <x-field data-name="loading" data-type="boolean" data-desc="セッションが初期化または更新されている間は`true`、それ以外は`false`。"></x-field>
118
+ <x-field data-name="login" data-type="function" data-desc="ログインプロセスを開始する関数。DID Connect UIを開きます。"></x-field>
119
+ <x-field data-name="logout" data-type="function" data-desc="ユーザーをログアウトさせ、セッションをクリアする関数。"></x-field>
120
+ <x-field data-name="initialized" data-type="boolean" data-desc="初期セッションチェックが完了すると`true`になります。"></x-field>
121
+ </x-field-group>
122
+
123
+ ## これで完了です!
124
+
125
+ おめでとうございます!ReactアプリケーションにDIDベースの認証フローを完全に実装しました。ユーザーはDID Walletを使用してサインインでき、アプリケーションは安全にセッション情報にアクセスできます。
126
+
127
+ ### 次のステップ
128
+
129
+ さらに深く掘り下げ、より高度な機能を探求するには、次のセクションをご覧ください:
130
+
131
+ <x-cards>
132
+ <x-card data-title="セッション管理(SessionProvider)" data-icon="lucide:key-round" data-href="/core-components/session-provider">
133
+ `SessionProvider`のすべての設定オプションについて学び、セッションの挙動やタイムアウトなどをカスタマイズします。
134
+ </x-card>
135
+ <x-card data-title="接続UI(DidConnect)" data-icon="lucide:qr-code" data-href="/core-components/did-connect">
136
+ `DidConnect`コンポーネントを探索し、接続UIをページに直接埋め込む宣言的な方法を学びます。
137
+ </x-card>
138
+ </x-cards>
@@ -0,0 +1,138 @@
1
+ # Getting Started
2
+
3
+ This guide will walk you through the essential steps to integrate decentralized identity (DID) authentication into your React application using `@arcblock/did-connect-react`. In just a few minutes, you'll have a fully functional login and logout flow.
4
+
5
+ ### Prerequisites
6
+
7
+ Before you begin, ensure your development environment meets the following criteria:
8
+
9
+ - You have a React project set up.
10
+ - You have a running Blocklet Server instance that will handle the authentication requests. The library is designed to work seamlessly with a backend powered by Blocklet Server.
11
+
12
+ ## Step 1: Install the Library
13
+
14
+ First, add the `@arcblock/did-connect-react` package to your project. You can use either npm or yarn.
15
+
16
+ ```bash Install with npm icon=logos:npm
17
+ npm install @arcblock/did-connect-react
18
+ ```
19
+
20
+ ```bash Install with yarn icon=logos:yarn
21
+ yarn add @arcblock/did-connect-react
22
+ ```
23
+
24
+ ## Step 2: Set Up the SessionProvider
25
+
26
+ The `SessionProvider` is the heart of the library. It's a context provider that manages the user's session state (like login status and user information) and makes it available to all components wrapped within it. You should place it at the root of your application, for instance, in your `App.js` file.
27
+
28
+ For applications built on Blocklet, the recommended way to initialize the provider is by using the `createAuthServiceSessionContext` factory function.
29
+
30
+ ```javascript App.js icon=logos:react
31
+ import React from 'react';
32
+ import { createAuthServiceSessionContext } from '@arcblock/did-connect-react/lib/Session';
33
+ import Home from './Home'; // We will create this component in the next step
34
+
35
+ // createAuthServiceSessionContext is optimized for Blocklet environments
36
+ const { SessionProvider } = createAuthServiceSessionContext();
37
+
38
+ function App() {
39
+ return (
40
+ // The serviceHost prop points to the base path of your backend authentication service.
41
+ // For a standard Blocklet, this is usually the blocklet's prefix or '/'.
42
+ <SessionProvider serviceHost="/">
43
+ <Home />
44
+ </SessionProvider>
45
+ );
46
+ }
47
+
48
+ export default App;
49
+ ```
50
+
51
+ ## Step 3: Implement Login and Logout
52
+
53
+ Now, let's create a component that allows users to log in and log out. We can access the session data and functions using React's `useContext` hook with the `SessionContext`.
54
+
55
+ The `session` object gives you everything you need: the current `user`, the `loading` state, and functions like `login()` and `logout()`.
56
+
57
+ ```javascript Home.js icon=logos:react
58
+ import React, { useContext } from 'react';
59
+ import { SessionContext } from '@arcblock/did-connect-react/lib/Session';
60
+ import ConnectButton from '@arcblock/did-connect-react/lib/Button';
61
+ import Button from '@arcblock/ux/lib/Button'; // A general-purpose button
62
+ import CircularProgress from '@mui/material/CircularProgress';
63
+
64
+ function Home() {
65
+ // Access the session context
66
+ const { session } = useContext(SessionContext);
67
+
68
+ // Destructure for easier access
69
+ const { user, loading, login, logout } = session;
70
+
71
+ // Display a loading indicator while the session is being initialized
72
+ if (loading) {
73
+ return <CircularProgress />;
74
+ }
75
+
76
+ return (
77
+ <div style={{ padding: '20px', textAlign: 'center' }}>
78
+ {user ? (
79
+ // If the user is logged in, show their DID and a logout button
80
+ <div>
81
+ <h1>Welcome!</h1>
82
+ <p>Your DID: {user.did}</p>
83
+ <Button variant="contained" color="secondary" onClick={logout}>
84
+ Logout
85
+ </Button>
86
+ </div>
87
+ ) : (
88
+ // If not logged in, show the login button
89
+ <div>
90
+ <h1>Please Sign In</h1>
91
+ <ConnectButton onClick={() => login()}>
92
+ Connect Wallet
93
+ </ConnectButton>
94
+ </div>
95
+ )}
96
+ </div>
97
+ );
98
+ }
99
+
100
+ export default Home;
101
+ ```
102
+
103
+ When the user clicks the `ConnectButton`, the `login()` function is called. This function handles opening the DID Connect modal, which displays a QR code for the user to scan with their DID Wallet, and manages the entire authentication process.
104
+
105
+ ## Step 4: Access User Data
106
+
107
+ Once a user has successfully logged in, the `session.user` object will be populated. This object contains the user's profile information retrieved from their DID Wallet.
108
+
109
+ The `session` object provided by the context is your main interface to the user's authentication state. Here are its key properties:
110
+
111
+ <x-field-group>
112
+ <x-field data-name="user" data-type="object | null" data-desc="The authenticated user object. It's `null` if no user is logged in.">
113
+ <x-field data-name="did" data-type="string" data-desc="The user's Decentralized Identifier (DID)."></x-field>
114
+ <x-field data-name="fullName" data-type="string" data-desc="The user's full name from their wallet profile."></x-field>
115
+ <x-field data-name="email" data-type="string" data-desc="The user's email from their wallet profile."></x-field>
116
+ </x-field>
117
+ <x-field data-name="loading" data-type="boolean" data-desc="`true` while the session is being initialized or refreshed, `false` otherwise."></x-field>
118
+ <x-field data-name="login" data-type="function" data-desc="A function to initiate the login process, which opens the DID Connect UI."></x-field>
119
+ <x-field data-name="logout" data-type="function" data-desc="A function to log the user out and clear the session."></x-field>
120
+ <x-field data-name="initialized" data-type="boolean" data-desc="`true` once the initial session check is complete."></x-field>
121
+ </x-field-group>
122
+
123
+ ## You're All Set!
124
+
125
+ Congratulations! You have successfully implemented a complete DID-based authentication flow in your React application. Users can now sign in using their DID Wallet, and your application can securely access their session information.
126
+
127
+ ### Next Steps
128
+
129
+ To dive deeper and explore more advanced features, check out the following sections:
130
+
131
+ <x-cards>
132
+ <x-card data-title="Session Management (SessionProvider)" data-icon="lucide:key-round" data-href="/core-components/session-provider">
133
+ Learn about all the configuration options for `SessionProvider` to customize session behavior, timeouts, and more.
134
+ </x-card>
135
+ <x-card data-title="Connection UI (DidConnect)" data-icon="lucide:qr-code" data-href="/core-components/did-connect">
136
+ Explore the `DidConnect` component for a declarative way to embed the connection UI directly into your pages.
137
+ </x-card>
138
+ </x-cards>
@@ -0,0 +1,138 @@
1
+ # 入門指南
2
+
3
+ 本指南將引導您完成使用 `@arcblock/did-connect-react` 將去中心化身分(DID)驗證整合到您的 React 應用程式中的基本步驟。只需幾分鐘,您就可以擁有一個功能齊全的登入和登出流程。
4
+
5
+ ### 前提條件
6
+
7
+ 在開始之前,請確保您的開發環境符合以下標準:
8
+
9
+ - 您已設定好一個 React 專案。
10
+ - 您有一個正在執行的 Blocklet Server 實例,它將處理驗證請求。該函式庫旨在與由 Blocklet Server 驅動的後端無縫協作。
11
+
12
+ ## 步驟 1:安裝函式庫
13
+
14
+ 首先,將 `@arcblock/did-connect-react` 套件新增到您的專案中。您可以使用 npm 或 yarn。
15
+
16
+ ```bash Install with npm icon=logos:npm
17
+ npm install @arcblock/did-connect-react
18
+ ```
19
+
20
+ ```bash Install with yarn icon=logos:yarn
21
+ yarn add @arcblock/did-connect-react
22
+ ```
23
+
24
+ ## 步驟 2:設定 SessionProvider
25
+
26
+ `SessionProvider` 是該函式庫的核心。它是一個 context provider,負責管理使用者的會話狀態(如登入狀態和使用者資訊),並將其提供給所有被它包裹的元件。您應該將它放在應用程式的根部,例如,在您的 `App.js` 檔案中。
27
+
28
+ 對於基於 Blocklet 建構的應用程式,建議使用 `createAuthServiceSessionContext` 工廠函數來初始化 provider。
29
+
30
+ ```javascript App.js icon=logos:react
31
+ import React from 'react';
32
+ import { createAuthServiceSessionContext } from '@arcblock/did-connect-react/lib/Session';
33
+ import Home from './Home'; // 我們將在下一步建立此元件
34
+
35
+ // createAuthServiceSessionContext 專為 Blocklet 環境進行了最佳化
36
+ const { SessionProvider } = createAuthServiceSessionContext();
37
+
38
+ function App() {
39
+ return (
40
+ // serviceHost 屬性指向您後端驗證服務的基礎路徑。
41
+ // 對於標準的 Blocklet,這通常是 blocklet 的前綴或 '/'。
42
+ <SessionProvider serviceHost="/">
43
+ <Home />
44
+ </SessionProvider>
45
+ );
46
+ }
47
+
48
+ export default App;
49
+ ```
50
+
51
+ ## 步驟 3:實作登入和登出
52
+
53
+ 現在,讓我們建立一個允許使用者登入和登出的元件。我們可以使用 React 的 `useContext` hook 搭配 `SessionContext` 來存取會話資料和函數。
54
+
55
+ `session` 物件為您提供了所需的一切:目前的 `user`、`loading` 狀態,以及像 `login()` 和 `logout()` 這樣的函數。
56
+
57
+ ```javascript Home.js icon=logos:react
58
+ import React, { useContext } from 'react';
59
+ import { SessionContext } from '@arcblock/did-connect-react/lib/Session';
60
+ import ConnectButton from '@arcblock/did-connect-react/lib/Button';
61
+ import Button from '@arcblock/ux/lib/Button'; // 一個通用按鈕
62
+ import CircularProgress from '@mui/material/CircularProgress';
63
+
64
+ function Home() {
65
+ // 存取會話 context
66
+ const { session } = useContext(SessionContext);
67
+
68
+ // 解構以便於存取
69
+ const { user, loading, login, logout } = session;
70
+
71
+ // 在會話初始化期間顯示載入指示器
72
+ if (loading) {
73
+ return <CircularProgress />;
74
+ }
75
+
76
+ return (
77
+ <div style={{ padding: '20px', textAlign: 'center' }}>
78
+ {user ? (
79
+ // 如果使用者已登入,顯示他們的 DID 和一個登出按鈕
80
+ <div>
81
+ <h1>歡迎!</h1>
82
+ <p>您的 DID: {user.did}</p>
83
+ <Button variant="contained" color="secondary" onClick={logout}>
84
+ 登出
85
+ </Button>
86
+ </div>
87
+ ) : (
88
+ // 如果未登入,顯示登入按鈕
89
+ <div>
90
+ <h1>請登入</h1>
91
+ <ConnectButton onClick={() => login()}>
92
+ 連接錢包
93
+ </ConnectButton>
94
+ </div>
95
+ )}
96
+ </div>
97
+ );
98
+ }
99
+
100
+ export default Home;
101
+ ```
102
+
103
+ 當使用者點擊 `ConnectButton` 時,會呼叫 `login()` 函數。此函數負責打開 DID Connect 彈出視窗,該視窗會顯示一個 QR code 供使用者使用他們的 DID Wallet 掃描,並管理整個驗證過程。
104
+
105
+ ## 步驟 4:存取使用者資料
106
+
107
+ 一旦使用者成功登入,`session.user` 物件將會被填入資料。此物件包含從使用者的 DID Wallet 中檢索到的個人資料資訊。
108
+
109
+ 由 context 提供的 `session` 物件是您與使用者驗證狀態互動的主要介面。以下是其關鍵屬性:
110
+
111
+ <x-field-group>
112
+ <x-field data-name="user" data-type="object | null" data-desc="已驗證的使用者物件。如果沒有使用者登入,則為 `null`。">
113
+ <x-field data-name="did" data-type="string" data-desc="使用者的去中心化身分識別碼(DID)。"></x-field>
114
+ <x-field data-name="fullName" data-type="string" data-desc="來自使用者錢包個人資料的全名。"></x-field>
115
+ <x-field data-name="email" data-type="string" data-desc="來自使用者錢包個人資料的電子郵件。"></x-field>
116
+ </x-field>
117
+ <x-field data-name="loading" data-type="boolean" data-desc="在會話初始化或刷新期間為 `true`,否則為 `false`。"></x-field>
118
+ <x-field data-name="login" data-type="function" data-desc="一個啟動登入過程的函數,它會打開 DID Connect 使用者介面。"></x-field>
119
+ <x-field data-name="logout" data-type="function" data-desc="一個將使用者登出並清除會話的函數。"></x-field>
120
+ <x-field data-name="initialized" data-type="boolean" data-desc="初始會話檢查完成後為 `true`。"></x-field>
121
+ </x-field-group>
122
+
123
+ ## 你已完成所有設定!
124
+
125
+ 恭喜!您已成功在您的 React 應用程式中實作了一個完整的基於 DID 的驗證流程。使用者現在可以使用他們的 DID Wallet 登入,您的應用程式也可以安全地存取他們的會話資訊。
126
+
127
+ ### 後續步驟
128
+
129
+ 要深入了解並探索更多進階功能,請查看以下部分:
130
+
131
+ <x-cards>
132
+ <x-card data-title="會話管理 (SessionProvider)" data-icon="lucide:key-round" data-href="/core-components/session-provider">
133
+ 了解 SessionProvider 的所有設定選項,以自訂會話行為、逾時等。
134
+ </x-card>
135
+ <x-card data-title="連接 UI (DidConnect)" data-icon="lucide:qr-code" data-href="/core-components/did-connect">
136
+ 探索 DidConnect 元件,以一種宣告式的方式將連接 UI 直接嵌入到您的頁面中。
137
+ </x-card>
138
+ </x-cards>
@@ -0,0 +1,138 @@
1
+ # 快速入门
2
+
3
+ 本指南将引导你完成使用 `@arcblock/did-connect-react` 将去中心化身份(DID)验证集成到你的 React 应用中的基本步骤。只需几分钟,你就能拥有一个功能齐全的登录和登出流程。
4
+
5
+ ### 前提条件
6
+
7
+ 在开始之前,请确保你的开发环境满足以下条件:
8
+
9
+ - 你已建立一个 React 项目。
10
+ - 你有一个正在运行的 Blocklet Server 实例,用于处理验证请求。该库旨在与由 Blocklet Server 提供支持的后端无缝协作。
11
+
12
+ ## 第 1 步:安装库
13
+
14
+ 首先,将 `@arcblock/did-connect-react` 包添加到你的项目中。你可以使用 npm 或 yarn。
15
+
16
+ ```bash Install with npm icon=logos:npm
17
+ npm install @arcblock/did-connect-react
18
+ ```
19
+
20
+ ```bash Install with yarn icon=logos:yarn
21
+ yarn add @arcblock/did-connect-react
22
+ ```
23
+
24
+ ## 第 2 步:设置 SessionProvider
25
+
26
+ `SessionProvider` 是该库的核心。它是一个上下文提供程序,用于管理用户的会话状态(如登录状态和用户信息),并使其对所有包裹在其中的组件可用。你应该将其放置在应用的根部,例如,在你的 `App.js` 文件中。
27
+
28
+ 对于基于 Blocklet 构建的应用,推荐的初始化提供程序的方法是使用 `createAuthServiceSessionContext` 工厂函数。
29
+
30
+ ```javascript App.js icon=logos:react
31
+ import React from 'react';
32
+ import { createAuthServiceSessionContext } from '@arcblock/did-connect-react/lib/Session';
33
+ import Home from './Home'; // 我们将在下一步创建此组件
34
+
35
+ // createAuthServiceSessionContext 针对 Blocklet 环境进行了优化
36
+ const { SessionProvider } = createAuthServiceSessionContext();
37
+
38
+ function App() {
39
+ return (
40
+ // serviceHost prop 指向后端验证服务的基础路径。
41
+ // 对于标准 Blocklet,这通常是 blocklet 的前缀或“/”。
42
+ <SessionProvider serviceHost="/">
43
+ <Home />
44
+ </SessionProvider>
45
+ );
46
+ }
47
+
48
+ export default App;
49
+ ```
50
+
51
+ ## 第 3 步:实现登录和登出
52
+
53
+ 现在,让我们创建一个允许用户登录和登出的组件。我们可以使用 React 的 `useContext` 钩子和 `SessionContext` 来访问会话数据和函数。
54
+
55
+ `session` 对象为你提供了所需的一切:当前的 `user`、`loading` 状态,以及像 `login()` 和 `logout()` 这样的函数。
56
+
57
+ ```javascript Home.js icon=logos:react
58
+ import React, { useContext } from 'react';
59
+ import { SessionContext } from '@arcblock/did-connect-react/lib/Session';
60
+ import ConnectButton from '@arcblock/did-connect-react/lib/Button';
61
+ import Button from '@arcblock/ux/lib/Button'; // 一个通用按钮
62
+ import CircularProgress from '@mui/material/CircularProgress';
63
+
64
+ function Home() {
65
+ // 访问会话上下文
66
+ const { session } = useContext(SessionContext);
67
+
68
+ // 解构以便更轻松地访问
69
+ const { user, loading, login, logout } = session;
70
+
71
+ // 在会话初始化期间显示加载指示器
72
+ if (loading) {
73
+ return <CircularProgress />;
74
+ }
75
+
76
+ return (
77
+ <div style={{ padding: '20px', textAlign: 'center' }}>
78
+ {user ? (
79
+ // 如果用户已登录,则显示其 DID 和登出按钮
80
+ <div>
81
+ <h1>Welcome!</h1>
82
+ <p>Your DID: {user.did}</p>
83
+ <Button variant="contained" color="secondary" onClick={logout}>
84
+ Logout
85
+ </Button>
86
+ </div>
87
+ ) : (
88
+ // 如果未登录,则显示登录按钮
89
+ <div>
90
+ <h1>Please Sign In</h1>
91
+ <ConnectButton onClick={() => login()}>
92
+ Connect Wallet
93
+ </ConnectButton>
94
+ </div>
95
+ )}
96
+ </div>
97
+ );
98
+ }
99
+
100
+ export default Home;
101
+ ```
102
+
103
+ 当用户点击 `ConnectButton` 时,`login()` 函数被调用。该函数负责打开 DID Connect 弹窗,显示一个二维码供用户使用其 DID 钱包扫描,并管理整个验证过程。
104
+
105
+ ## 第 4 步:访问用户数据
106
+
107
+ 用户成功登录后,`session.user` 对象将被填充。该对象包含从用户 DID 钱包中检索到的用户个人资料信息。
108
+
109
+ 由上下文提供的 `session` 对象是你与用户验证状态交互的主要接口。以下是其关键属性:
110
+
111
+ <x-field-group>
112
+ <x-field data-name="user" data-type="object | null" data-desc="已验证的用户对象。如果没有用户登录,则为 `null`。">
113
+ <x-field data-name="did" data-type="string" data-desc="用户的去中心化身份标识(DID)。"></x-field>
114
+ <x-field data-name="fullName" data-type="string" data-desc="来自用户钱包个人资料的全名。"></x-field>
115
+ <x-field data-name="email" data-type="string" data-desc="来自用户钱包个人资料的电子邮件。"></x-field>
116
+ </x-field>
117
+ <x-field data-name="loading" data-type="boolean" data-desc="在会话初始化或刷新期间为 `true`,否则为 `false`。"></x-field>
118
+ <x-field data-name="login" data-type="function" data-desc="一个启动登录过程的函数,它会打开 DID Connect UI。"></x-field>
119
+ <x-field data-name="logout" data-type="function" data-desc="一个用于登出用户并清除会话的函数。"></x-field>
120
+ <x-field data-name="initialized" data-type="boolean" data-desc="初始会话检查完成后为 `true`。"></x-field>
121
+ </x-field-group>
122
+
123
+ ## 你已准备就绪!
124
+
125
+ 恭喜!你已成功在你的 React 应用中实现了一个完整的基于 DID 的验证流程。用户现在可以使用他们的 DID 钱包登录,并且你的应用可以安全地访问他们的会话信息。
126
+
127
+ ### 后续步骤
128
+
129
+ 要深入了解并探索更多高级功能,请查看以下部分:
130
+
131
+ <x-cards>
132
+ <x-card data-title="会话管理 (SessionProvider)" data-icon="lucide:key-round" data-href="/core-components/session-provider">
133
+ 了解 `SessionProvider` 的所有配置选项,以自定义会话行为、超时等。
134
+ </x-card>
135
+ <x-card data-title="连接 UI (DidConnect)" data-icon="lucide:qr-code" data-href="/core-components/did-connect">
136
+ 探索 `DidConnect` 组件,以声明方式将连接 UI 直接嵌入到你的页面中。
137
+ </x-card>
138
+ </x-cards>