Flutter统一认证插件uni_auth的使用
Flutter统一认证插件uni_auth的使用
由UNICODE团队开发
UniAuth 是一个为Flutter应用程序设计的包,用于处理认证模块。它集成了各种认证服务,主要专注于Firebase Auth进行认证和Unifonic用于发送和验证一次性密码(OTP)。
特性
- 使用Firebase Authentication实现无缝登录和注册。
- 集成Unifonic进行基于OTP的认证。
- 全面的错误处理和用户反馈。
- 高度可定制以适应各种认证场景。
开始使用
要在您的Flutter项目中使用UniAuth,请按照以下步骤操作:
安装
- 在
pubspec.yaml
文件中添加UniAuth:dependencies: uni_auth: latest_version
- 运行
flutter pub get
来安装包。
使用
在Dart文件中导入UniAuth:
import 'package:uni_auth/uni_auth.dart';
初始化UniAuth及其Firebase实例和baseUrl:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
// 首先需要初始化你的firebase应用
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
// 然后初始化UniAuth包和baseUrl以及本地语言选项
UniAuth.init(
auth: FirebaseAuth.instance,
locale: const Locale('en'), // 可选
baseUrl: 'YOUR_BASE_URL',
);
runApp(const MyApp());
}
一些方法示例
创建用户通过电子邮件和密码:
await UniAuthService.createUserWithEmail(
authData: AuthData(
email: 'YOUR_EMAIL', // 替换为实际邮箱
password: 'YOUR_PASSWORD', // 替换为实际密码
),
);
检查用户是否已登录:
UniAuthService.checkUserLoggedIn;
发送和验证OTP:
UniAuthService.sendOTP(AuthData());
UniAuthService.verifyOTP(AuthData());
通过令牌登录:
UniAuthService.loginWithToken(token: 'YOUR_TOKEN');
示例
下面是一个完整的示例演示如何使用UniAuth:
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:uni_auth/uni_auth.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化Firebase应用
// await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
UniAuth.init(
auth: FirebaseAuth.instance,
locale: const Locale('en'),
baseUrl: 'YOUR_BASE_URL',
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Uni-Auth-Example',
home: Scaffold(
appBar: AppBar(
backgroundColor: Colors.teal,
title: const Text('Uni-Auth-Example',
style: TextStyle(color: Colors.white)),
),
body: Padding(
padding: const EdgeInsets.all(14),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text('Create User With Email & Password'),
ElevatedButton(
onPressed: () async {
final result = await UniAuthService.createUserWithEmail(
authData: AuthData(
email: 'YOUR_EMAIL', // 替换为实际邮箱
password: 'YOUR_PASSWORD', // 替换为实际密码
),
);
if (result.isSuccess) {
debugPrint('User Created : ${result.user}');
} else {
debugPrint('Error : ${result.errorMessage}');
}
},
child: const Text('Create User'),
),
const Text('Check If User Logged In'),
ElevatedButton(
onPressed: () async {
final result = UniAuthService.checkUserLoggedIn;
debugPrint('User Logged In : $result');
},
child: const Text('Check If User Logged In'),
),
const SizedBox(height: 10),
CheckSignInState(
holder: const Text('Check If User Logged In Wrapper Builder'),
onLoggedIn: () {
debugPrint('User Logged In');
},
onNotLoggedIn: () {
debugPrint('User Not Logged In');
},
),
],
),
),
),
);
}
}
更多关于Flutter统一认证插件uni_auth的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter统一认证插件uni_auth的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何使用Flutter统一认证插件uni_auth
的示例代码案例。这个插件通常用于处理多种认证方式,比如OAuth、手机号验证码登录等。请注意,实际使用中你可能需要根据具体的认证服务提供商(如Google、Facebook、Apple等)进行配置和调用。
首先,确保你已经在pubspec.yaml
文件中添加了uni_auth
依赖:
dependencies:
flutter:
sdk: flutter
uni_auth: ^最新版本号 # 请替换为实际的最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,让我们编写一个示例代码,展示如何使用uni_auth
进行OAuth认证。在这个例子中,我们将使用Google作为认证服务提供商。
1. 配置uni_auth
在你的Flutter项目的lib
目录下,创建一个新的文件,比如auth_service.dart
,用于封装认证逻辑。
import 'package:flutter/material.dart';
import 'package:uni_auth/uni_auth.dart';
class AuthService {
final UniAuth _uniAuth = UniAuth();
Future<void> googleLogin() async {
try {
// 配置Google OAuth
final config = UniAuthConfig(
providers: [
UniAuthOAuthConfig(
provider: UniAuthOAuthProvider.google,
clientId: '你的Google客户端ID', // 请替换为你的Google客户端ID
redirectUri: '你的回调URI', // 请替换为你的回调URI
),
],
);
// 初始化uni_auth
await _uniAuth.config(config);
// 执行Google登录
final result = await _uniAuth.login([UniAuthOAuthProvider.google]);
if (result.isSuccess) {
// 登录成功,获取用户信息
final userInfo = result.data!['userInfo'];
print('登录成功: $userInfo');
} else {
// 登录失败
print('登录失败: ${result.error?.message}');
}
} catch (e) {
print('发生错误: $e');
}
}
}
2. 使用AuthService
进行登录
在你的主应用文件(比如main.dart
)中,创建一个按钮来触发Google登录。
import 'package:flutter/material.dart';
import 'auth_service.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter UniAuth Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final AuthService _authService = AuthService();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter UniAuth Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
_authService.googleLogin();
},
child: Text('Google Login'),
),
),
);
}
}
注意事项
- Google客户端ID和回调URI:你需要去Google Cloud Console创建一个OAuth 2.0客户端ID,并设置正确的回调URI。
- 错误处理:在实际应用中,你可能需要更详细的错误处理逻辑,比如显示用户友好的错误信息。
- 其他认证方式:
uni_auth
支持多种认证方式,你可以根据需求添加配置和处理逻辑,比如Facebook、Apple登录等。
这个示例代码展示了如何使用uni_auth
插件进行Google OAuth认证。根据你的具体需求,你可以进一步扩展和定制这个示例。