Flutter用户引导插件at_onboarding_cli的使用
Flutter用户引导插件at_onboarding_cli的使用
简介
at_onboarding_cli
是一个用于认证和引导 atSign 的库。它允许开发者通过命令行接口对 atSign 进行认证、激活等操作。
开始使用
添加依赖
在你的 pubspec.yaml
文件中添加以下依赖:
dependencies:
at_onboarding_cli: ^1.3.0
然后运行以下命令以获取依赖项:
dart pub get
导入库
在你的 Dart 应用程序代码中导入库:
import 'package:at_onboarding_cli/at_onboarding_cli.dart';
使用方法
设置偏好设置
使用 AtOnboardingPreference
类来设置你的偏好设置。这些偏好设置将用于配置 AtOnboardingService
。
AtOnboardingPreference atOnboardingPreference = AtOnboardingPreference()
..rootDomain = 'root.atsign.org'
..qrCodePath = 'storage/qr_code.png'
..hiveStoragePath = 'storage/hive'
..namespace = 'example'
..downloadPath = 'storage/files'
..isLocalStoreRequired = true
..commitLogPath = 'storage/commitLog'
..cramSecret = '<your cram secret>'
..privateKey = '<your private key here>'
..atKeysFilePath = 'storage/alice_key.atKeys';
认证
认证过程用于验证用户是否拥有某个 atSign。用户需要在执行任何操作之前进行认证,包括读取、写入、删除或更新 atSign 中的数据以及发送通知。
认证步骤
- 导入
at_onboarding_cli
。 - 使用
AtOnboardingPreference
设置偏好设置。提供密钥或.atKeysFile
路径以进行认证。 - 使用所需的 atSign 和有效的
AtOnboardingPreference
实例创建AtOnboardingServiceImpl
实例。 - 调用
AtOnboardingService
上的authenticate
方法。 - 使用
getAtLookup
或getAtClient
获取经过认证的AtLookup
和AtClient
实例,以执行更复杂的操作。
AtOnboardingService atOnboardingService = AtOnboardingServiceImpl('[@alice](/user/alice)', atOnboardingPreference);
await atOnboardingService.authenticate();
AtClient? atClient = await atOnboardingService.atClient;
AtLookup? atLookup = atOnboardingService.atLookUp;
引导(激活)
引导过程是首次一次性认证,使用 QR 码中的 CRAM 密码进行。此过程激活 atSign,使其可以使用。
引导步骤
- 导入
at_onboarding_cli
。 - 使用
AtOnboardingPreference
设置偏好设置。如果有 CRAM 密码,请提供。 - 如果没有 CRAM 密码,则留空。在这种情况下,将向注册的电子邮件发送验证码。
- 使用所需的 atSign 和有效的
AtOnboardingPreference
实例创建AtOnboardingServiceImpl
实例。 - 调用
AtOnboardingServiceImpl
中的onboard()
方法。 - 使用
AtOnboardingServiceImpl
实例中的已认证atClient
和atLookup
执行复杂操作。
AtOnboardingService atOnboardingService = AtOnboardingServiceImpl('[@alice](/user/alice)', atOnboardingPreference);
await atOnboardingService.onboard();
print('Successfully sent verification code to your registered e-mail');
print('[Action Required] Enter your verification code:');
String verificationCode = ''; // 用户输入的验证码
await atOnboardingService.atClient();
AtLookup? atLookup = atOnboardingService.atLookUp();
activate_cli
这是一个简单的命令行工具,用于通过命令行参数激活 atSign。
使用方法
使用验证码激活
dart pub global activate at_onboarding_cli
at_activate -a your_atsign
> Successfully sent verification code to your registered e-mail
> [Action Required] Enter your verification code:
<your 4 character code here>
使用 CRAM 密码激活
dart pub global activate at_onboarding_cli
at_activate -a your_atsign -c your_cram_secret
register_cli
这是一个命令行工具,用于获取免费的 atsign 并将其注册到提供的电子邮件地址。
使用方法
使用全局命令
dart pub global activate at_onboarding_cli
at_register -e your_email
克隆仓库并本地运行
- 从 GitHub 克隆代码。
- 切换到
at_libraries/at_onboarding_cli
目录。 - 运行
dart pub get
。 - 运行以下命令:
dart run bin/register.dart -e email@email.com
- 输入发送到提供的电子邮件的验证码。
register_cli
获取 CRAM 密钥并自动调用activate_cli
激活获取的 atsign。- 成功激活后,可以在
at_onboarding_cli/keys
目录中找到.atKeysFile
。
示例代码
以下是完整的示例代码,展示了如何使用 at_onboarding_cli
进行认证和引导:
示例:认证和引导
import 'package:at_onboarding_cli/at_onboarding_cli.dart';
void main() async {
// 设置偏好设置
AtOnboardingPreference atOnboardingPreference = AtOnboardingPreference()
..rootDomain = 'root.atsign.org'
..qrCodePath = 'storage/qr_code.png'
..hiveStoragePath = 'storage/hive'
..namespace = 'example'
..downloadPath = 'storage/files'
..isLocalStoreRequired = true
..commitLogPath = 'storage/commitLog'
..cramSecret = '<your cram secret>'
..privateKey = '<your private key here>'
..atKeysFilePath = 'storage/alice_key.atKeys';
// 创建 AtOnboardingService 实例
AtOnboardingService atOnboardingService = AtOnboardingServiceImpl('[@alice](/user/alice)', atOnboardingPreference);
// 认证
try {
await atOnboardingService.authenticate();
print('Authentication successful');
} catch (e) {
print('Authentication failed: $e');
}
// 引导
try {
await atOnboardingService.onboard();
print('Onboarding successful');
} catch (e) {
print('Onboarding failed: $e');
}
// 获取认证后的实例
AtClient? atClient = await atOnboardingService.atClient;
AtLookup? atLookup = atOnboardingService.atLookUp;
if (atClient != null && atLookup != null) {
print('Authenticated AtClient and AtLookup instances obtained');
} else {
print('Failed to obtain authenticated instances');
}
}
APKAM 注册示例
以下是 APKAM 注册的完整示例步骤:
-
引导具有批准/拒绝注册权限的 atsign
dart example/onboard.dart -a <atsign> -c <CRAM secret> -k <path_store_keys_file>
例如:
dart example/onboard.dart -a [@alice](/user/alice) -k /home/alice/.atsign/@alice_wavikey.atKeys -c b26455a907582760ebf35bc4847de549bc41c24b25c8b1c58d5964f7b4f8a43bc55b0e9a601c9a9657d9a8b8bbc32f88b4e38ffaca03c8710ebae1b14ca9f364
-
使用已引导的 atsign 进行认证
dart example/apkam_examples/apkam_authenticate.dart -a <atsign> -k <path_of_keys_file_from_#1>
例如:
dart example/apkam_examples/apkam_authenticate.dart -a [@alice](/user/alice) -k /home/alice/.atsign/@alice_wavikey.atKeys
-
运行客户端以批准注册
dart example/apkam_examples/enroll_app_listen.dart -a <atsign> -k <path_of_keys_file_from_#1>
例如:
dart example/apkam_examples/enroll_app_listen.dart -a [@alice](/user/alice) -k /home/alice/.atsign/@alice_wavikey.atKeys
-
获取 OTP 用于注册
- 通过 SSL 客户端执行 PKAM 认证
- 获取挑战字符串
from:<@atsign> e.g. from:[@alice](/user/alice)
- 创建 pkamSignature
- 克隆
at_tools
仓库:
例如:git clone https://github.com/atsign-foundation/at_tools.git cd at_tools/packages/at_pkam dart bin/main.dart -p <keys_file_path> <from_response>
dart bin/main.dart -p /home/alice/.atsign/@alice_wavikey.atKeys -r _70138292-07b5-4e47-8c94-e02e38220775[@alice](/user/alice):883ea0aa-c526-400a-926e-48cae9281de9
- 克隆
- 使用 pkamSignature 进行认证
pkam:enrollmentId:<enrollmentId>:<pkamSignature>
- 获取 OTP
otp:get
- 获取挑战字符串
- 通过 SSL 客户端执行 PKAM 认证
-
请求注册
- 从新客户端提交注册
注意:这个路径必须与第一步中提供的路径不同。 例如:dart example/apkam_examples/apkam_enroll.dart -a <atsign> -k <path_to_store_keys_file> -o <otp>
dart example/apkam_examples/apkam_enroll.dart -a [@alice](/user/alice) -k /home/alice/.atsign/@alice_buzzkey.atKeys -o DY4UT4
- 从第三步的客户端批准注册
输入
yes
并按回车键。 - 注册成功,atKeys 文件存储在指定路径中
- 从新客户端提交注册
-
使用注册的 keys 文件进行认证
dart example/apkam_examples/apkam_authenticate.dart -a <atsign> -k <path_of_keys_file_from_#5.1>
注意:这个 keys 文件与第一步生成的 keys 文件不同。这个新的文件只能访问与此注册 ID 允许访问的数据。
希望这些信息能帮助你更好地理解和使用 at_onboarding_cli
插件。如果你有任何问题或需要进一步的帮助,请随时提问!
更多关于Flutter用户引导插件at_onboarding_cli的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html