Flutter统一认证插件uni_auth的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter统一认证插件uni_auth的使用

由UNICODE团队开发

UniAuth 是一个为Flutter应用程序设计的包,用于处理认证模块。它集成了各种认证服务,主要专注于Firebase Auth进行认证和Unifonic用于发送和验证一次性密码(OTP)。

特性

  • 使用Firebase Authentication实现无缝登录和注册。
  • 集成Unifonic进行基于OTP的认证。
  • 全面的错误处理和用户反馈。
  • 高度可定制以适应各种认证场景。

开始使用

要在您的Flutter项目中使用UniAuth,请按照以下步骤操作:

安装
  1. pubspec.yaml文件中添加UniAuth:
    dependencies:
      uni_auth: latest_version
    
  2. 运行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

1 回复

更多关于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'),
        ),
      ),
    );
  }
}

注意事项

  1. Google客户端ID和回调URI:你需要去Google Cloud Console创建一个OAuth 2.0客户端ID,并设置正确的回调URI。
  2. 错误处理:在实际应用中,你可能需要更详细的错误处理逻辑,比如显示用户友好的错误信息。
  3. 其他认证方式uni_auth支持多种认证方式,你可以根据需求添加配置和处理逻辑,比如Facebook、Apple登录等。

这个示例代码展示了如何使用uni_auth插件进行Google OAuth认证。根据你的具体需求,你可以进一步扩展和定制这个示例。

回到顶部