Flutter区块链认证插件web3auth_flutter的使用
Flutter区块链认证插件 web3auth_flutter
的使用
Web3Auth 是一种无密码认证服务,专为 Web3 应用和钱包设计。它通过聚合 OAuth 登录(如 Google、Twitter、Discord)、不同钱包以及创新的多方计算(MPC),为您的应用程序中的每个用户提供无缝的登录体验。
📖 文档
查阅官方 Web3Auth 文档 和 SDK 参考 以开始使用!
💡 特性
- 插件式 OAuth 基于 Web3 认证服务
- 完全去中心化的非托管密钥基础设施
- 端到端可白标解决方案
- 基于阈值加密的密钥重建
- 多因素认证设置与恢复(包括密码、备份短语、设备因子编辑/删除等)
- 支持 WebAuthn 和无密码登录
- 支持连接多个钱包
- DApp 活动会话管理
…以及其他更多功能
⏪ 要求
iOS
- 仅支持 iOS 14+,因为需要使用
ASWebAuthenticationSession
- Xcode 11.4+ / 12.x
- Swift 4.x / 5.x
- 对于 iOS 构建:
platform :ios
需要设置为14.0
。检查您 Flutter 项目中的ios/Podfile
文件进行修改。
Android
- 支持 API 版本 26 或更高版本。
- 对于 Android 构建:
compileSdkVersion
需要设置为 34。 - 检查您 Flutter 项目中的
android/app/build.gradle
文件进行修改。
- 对于 Android 构建:
⚡ 安装
将 web3auth_flutter
添加为 pubspec.yaml
文件中的依赖项:
dependencies:
web3auth_flutter: ^6.1.1
或运行以下命令:
flutter pub add web3auth_flutter
🌟 配置
查阅 SDK 参考 以配置 Android 和 iOS 构建。
🩹 示例
以下是一个完整的示例代码,展示了如何初始化、登录、登出用户,并处理异常:
import 'package:flutter/material.dart';
import 'package:web3auth_flutter/web3auth_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState with WidgetsBindingObserver {
String _privKey = '';
String _userInfo = '';
[@override](/user/override)
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
initWeb3Auth();
}
[@override](/user/override)
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
Future<void> initWeb3Auth() async {
await Web3AuthFlutter.init(
Web3AuthOptions(
clientId: 'YOUR_WEB3AUTH_CLIENT_ID', // 替换为您从 dashboard.web3auth.io 获取的 client ID
network: Network.sapphire_devnet,
redirectUrl: 'YOUR_REDIRECT_URL', // 替换为您的重定向 URL
),
);
}
Future<void> initialize() async {
try {
final result = await Web3AuthFlutter.initialize();
setState(() {
_privKey = result.privKey;
_userInfo = result.userInfo.toString();
});
} catch (e) {
print('Error initializing: $e');
}
}
Future<void> login() async {
try {
await Web3AuthFlutter.login(LoginParams(loginProvider: Provider.google));
initialize();
} on UserCancelledException {
print("User cancelled.");
} on UnKnownException {
print("Unknown exception occurred");
} catch (e) {
print(e.toString());
}
}
Future<void> logout() async {
await Web3AuthFlutter.logout();
setState(() {
_privKey = '';
_userInfo = '';
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Web3Auth Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: login,
child: const Text('Login with Google'),
),
ElevatedButton(
onPressed: logout,
child: const Text('Logout'),
),
if (_privKey.isNotEmpty)
Text('Private Key: $_privKey'),
if (_userInfo.isNotEmpty)
Text('User Info: $_userInfo'),
],
),
),
),
);
}
[@override](/user/override)
void didChangeAppLifecycleState(final AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
Web3AuthFlutter.setCustomTabsClosed();
}
}
}
触发用户取消异常(Android)
在 Android 上,如果您希望触发用户关闭浏览器标签时的异常,可以使用 WidgetsBindingObserver
混入您的登录屏幕:
[@override](/user/override)
void didChangeAppLifecycleState(final AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
Web3AuthFlutter.setCustomTabsClosed();
}
}
更多关于Flutter区块链认证插件web3auth_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter区块链认证插件web3auth_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用web3auth_flutter
插件来进行区块链认证的示例代码。这个插件允许你通过Web3Auth服务进行用户身份验证,并管理他们的区块链账户。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加web3auth_flutter
的依赖:
dependencies:
flutter:
sdk: flutter
web3auth_flutter: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置Web3Auth
在你的Flutter项目的入口文件(通常是main.dart
)中,配置Web3Auth客户端。你需要提供你的Web3Auth API密钥(从Web3Auth Dashboard获取)。
import 'package:flutter/material.dart';
import 'package:web3auth_flutter/web3auth_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Web3Auth Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Web3Auth Demo'),
),
body: Web3AuthScreen(),
),
);
}
}
class Web3AuthScreen extends StatefulWidget {
@override
_Web3AuthScreenState createState() => _Web3AuthScreenState();
}
class _Web3AuthScreenState extends State<Web3AuthScreen> {
late Web3AuthClient _web3AuthClient;
@override
void initState() {
super.initState();
// 替换为你的Web3Auth API密钥
const apiKey = 'YOUR_WEB3AUTH_API_KEY';
_web3AuthClient = Web3AuthClient(apiKey: apiKey);
}
@override
Widget build(BuildContext context) {
return Center(
child: ElevatedButton(
onPressed: () async {
try {
// 启动认证流程
final authResult = await _web3AuthClient.authenticate();
// 处理认证结果
if (authResult.isSuccessful) {
// 获取用户信息
final user = authResult.user;
print('Authenticated user: ${user.toJson()}');
} else {
print('Authentication failed: ${authResult.error?.message}');
}
} catch (e) {
print('Error during authentication: $e');
}
},
child: Text('Authenticate with Web3Auth'),
),
);
}
}
3. 处理认证结果
上面的代码示例中,authenticate()
方法会启动认证流程,并返回一个AuthResult
对象。如果认证成功,你可以从AuthResult
对象中获取用户信息。如果认证失败,你可以处理错误。
4. 注意事项
- 确保你已经从Web3Auth Dashboard获取了API密钥,并替换示例代码中的
YOUR_WEB3AUTH_API_KEY
。 - Web3Auth插件依赖于Web视图,因此确保你的应用有适当的权限来处理Web内容。
- 你可以根据需求进一步自定义认证流程,比如添加UI元素来显示加载状态或错误消息。
这个示例提供了一个基本的框架,你可以在此基础上根据需求进行扩展和修改。