Flutter身份验证插件authivate的使用

Flutter身份验证插件authivate的使用

Authivate

Authivate 是一个用户认证和管理平台。

安装 💻

要开始使用 Authivate,你必须在你的机器上安装 Dart SDK。

通过 dart pub add 安装:

dart pub add authivate

示例用法

以下是一个完整的示例,展示了如何使用 Authivate 插件进行用户注册、登录、发送确认密码邮件和忘记密码邮件。

import 'dart:developer';

import 'package:authivate/authivate.dart';

void main() async {
  // 初始化配置
  final config = AuthivateConfig(
    apiKey: 'your-API-key-gotten-from-the-dashboard',
    projectId: 'authivate-test',
  );

  /// 初始化 Authivate 实例
  final autivateInstance = Authivate(config: config);

  /// 注册用户
  await signUpUser();

  /// 登录用户
  await signInUser();

  /// 发送确认密码邮件
  await sendConfirmAccountEmail();

  /// 发送忘记密码邮件
  await sendForgotPasswordEmail();
}

Future<void> signUpUser() async {
  /// 注册用户
  const emailAddress = 'akandepeter@gmail.com';
  const firstName = 'Peter';
  const lastName = 'Akande';
  const password = 'Password'; // 可选,取决于项目设置

  final signUpResponse = await Authivate.instance.signUpUser(
    emailAddress: emailAddress,
    lastName: lastName,
    firstName: firstName,
    password: password,
  );

  if (signUpResponse.isLeft()) {
    // 发生错误
    log(signUpResponse.failureMessage);
    return;
  }

  // 用户成功注册
  log(signUpResponse.successResponse.toString());

  /// 响应
  /// {message: Email Sent!,
  ///  user_record: {
  ///    email_address: akandepeter@gmail.com,
  ///    is_verified: false,
  ///    date_created: 2023-11-11T11:12:48.293571Z,
  ///    first_name: Peter,
  ///    last_name: Akande,
  ///    user_unique_id: dp.ldcaopaggcapepaom
  ///    }
  /// }
}

Future<void> signInUser() async {
  /// 登录用户
  const emailAddress = 'akandepeter@gmail.com';
  const password = 'Password'; // 可选,取决于项目设置

  final signInResponse = await Authivate.instance.signInUser(
    emailAddress: emailAddress,
    password: password,
  );

  if (signInResponse.isLeft()) {
    // 发生错误
    log(signInResponse.failureMessage);
    return;
  }

  // 用户成功登录
  log(signInResponse.successResponse.toString());

  /// 响应
  /// {
  ///  user_record: {
  ///    email_address: akandepeter@gmail.com,
  ///    is_verified: false,
  ///    date_created: 2023-11-11T11:12:48.293571Z,
  ///    first_name: Peter,
  ///    last_name: Akande,
  ///    user_unique_id: dp.ldcaopaggcapepaom
  ///    }
  /// }
}

Future<void> sendConfirmAccountEmail() async {
  /// 发送确认密码邮件
  const emailAddress = 'akandepeter@gmail.com';

  final confirmAccountEmailResponse =
      await Authivate.instance.requestOTPForUser(
    emailAddress: emailAddress,
  );

  if (confirmAccountEmailResponse.isLeft()) {
    // 发生错误
    log(confirmAccountEmailResponse.failureMessage);
    return;
  }

  // 发送确认密码邮件
  log(confirmAccountEmailResponse.successResponse.toString());

  /// 响应
  /// {{message: Email Sent Successfully}}
}

Future<void> sendForgotPasswordEmail() async {
  /// 发送忘记密码邮件
  const emailAddress = 'akandepeter@gmail.com';

  final forgotPasswordResponse =
      await Authivate.instance.requestForgotPasswordForUser(
    emailAddress: emailAddress,
  );

  if (forgotPasswordResponse.isLeft()) {
    // 发生错误
    log(forgotPasswordResponse.failureMessage);
    return;
  }

  // 忘记密码邮件发送成功
  log(forgotPasswordResponse.successResponse.toString());

  /// 响应
  /// {message: Forgot Password Email Sent!}
}

更多关于Flutter身份验证插件authivate的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter身份验证插件authivate的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Authivate 是一个用于身份验证的 Flutter 插件,它简化了用户身份验证流程,支持多种身份验证方式,如电子邮件/密码、社交登录(Google、Facebook 等)、手机号码认证等。以下是如何在 Flutter 项目中使用 Authivate 插件的步骤。

1. 安装依赖

首先,在你的 pubspec.yaml 文件中添加 authivate 依赖:

dependencies:
  flutter:
    sdk: flutter
  authivate: ^latest_version  # 请替换为最新版本

然后运行 flutter pub get 来安装依赖。

2. 初始化 Authivate

在你的 Flutter 应用的 main.dart 文件中,初始化 Authivate

import 'package:authivate/authivate.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Authivate
  await Authivate.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的 API 密钥
    projectId: 'YOUR_PROJECT_ID',  // 替换为你的项目 ID
  );
  
  runApp(MyApp());
}

3. 实现身份验证流程

3.1 注册新用户

try {
  final result = await Authivate.signUpWithEmail(
    email: 'user@example.com',
    password: 'password123',
  );
  print('User registered successfully: ${result.userId}');
} catch (e) {
  print('Error during registration: $e');
}

3.2 登录用户

try {
  final result = await Authivate.signInWithEmail(
    email: 'user@example.com',
    password: 'password123',
  );
  print('User signed in successfully: ${result.userId}');
} catch (e) {
  print('Error during sign in: $e');
}

3.3 使用 Google 登录

try {
  final result = await Authivate.signInWithGoogle();
  print('User signed in with Google: ${result.userId}');
} catch (e) {
  print('Error during Google sign in: $e');
}

3.4 使用手机号码登录

try {
  final result = await Authivate.signInWithPhoneNumber(
    phoneNumber: '+1234567890',
  );
  print('OTP sent to phone number: ${result.verificationId}');
} catch (e) {
  print('Error during phone number sign in: $e');
}

3.5 验证 OTP

try {
  final result = await Authivate.verifyOTP(
    verificationId: 'VERIFICATION_ID',  // 从 signInWithPhoneNumber 返回的 verificationId
    otp: '123456',  // 用户输入的 OTP
  );
  print('Phone number verified: ${result.userId}');
} catch (e) {
  print('Error during OTP verification: $e');
}

4. 获取当前用户信息

final currentUser = await Authivate.getCurrentUser();
if (currentUser != null) {
  print('Current user: ${currentUser.email}');
} else {
  print('No user is currently signed in');
}

5. 注销用户

await Authivate.signOut();
print('User signed out');

6. 处理用户状态变化

你可以使用 Authivate 提供的流来监听用户身份验证状态的变化:

Authivate.authStateChanges.listen((user) {
  if (user != null) {
    print('User is signed in: ${user.email}');
  } else {
    print('User is signed out');
  }
});

7. 错误处理

在使用 Authivate 进行身份验证时,可能会遇到各种错误。你可以使用 try-catch 块来捕获并处理这些错误。常见的错误类型包括:

  • AuthivateException: 身份验证过程中发生的错误。
  • NetworkException: 网络连接问题导致的错误。
try {
  final result = await Authivate.signInWithEmail(
    email: 'user@example.com',
    password: 'wrongpassword',
  );
} on AuthivateException catch (e) {
  print('Authentication failed: ${e.message}');
} on NetworkException catch (e) {
  print('Network error: ${e.message}');
} catch (e) {
  print('Unexpected error: $e');
}

8. 高级功能

Authivate 还提供了一些高级功能,如:

  • 密码重置: 允许用户通过电子邮件重置密码。
  • 多因素认证 (MFA): 增加额外的安全层。
  • 社交登录: 支持 Google、Facebook、Apple 等社交登录方式。
// 密码重置
await Authivate.sendPasswordResetEmail(email: 'user@example.com');
回到顶部