Flutter认证管理插件amplify_auth_repository的使用

Flutter认证管理插件amplify_auth_repository的使用

Flutter包用于使用AWS Amplify实现身份验证和存储。

功能 ✨

  • 使用邮箱和密码注册
  • 使用邮箱和密码登录
  • 维护会话
  • 发送/重新发送验证码
  • 重置密码
  • 设置/获取属性
  • 将文件上传到S3存储桶
  • 生成已上传文件的URL

开始使用 🎉

安装Amplify 📝

  1. 创建你的项目
  2. 下载amplifyconfiguration.dart文件

运行项目 🚀

  1. 在终端中输入 flutter run

示例代码

以下是一个简单的示例代码,展示了如何使用amplify_auth_repository插件来实现基本的身份验证功能。

import 'package:flutter/material.dart';
import 'package:amplify_auth_cognito/amplify_auth_cognito.dart';
import 'package:amplify_storage_s3/amplify_storage_s3.dart';
import 'package:amplify_flutter/amplify_flutter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool _isAmplifyConfigured = false;

  [@override](/user/override)
  void initState() {
    super.initState();
    _configureAmplify();
  }

  // 配置Amplify
  Future<void> _configureAmplify() async {
    try {
      // 添加身份验证插件
      Amplify.addPlugin(AmplifyAuthCognito());
      // 添加存储插件
      Amplify.addPlugin(AmplifyStorageS3());

      // 配置Amplify
      await Amplify.configure(amplifyconfig);
      setState(() {
        _isAmplifyConfigured = true;
      });
    } catch (e) {
      print('Error configuring Amplify: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Amplify Auth Demo'),
        ),
        body: Center(
          child: _isAmplifyConfigured
              ? ElevatedButton(
                  onPressed: () {
                    _signUp();
                  },
                  child: Text('Sign Up'),
                )
              : CircularProgressIndicator(),
        ),
      ),
    );
  }

  // 用户注册
  Future<void> _signUp() async {
    try {
      Map<String, String> userAttributes = {
        'email': 'test@example.com',
        'phone_number': '+1234567890',
      };

      SignUpResult result = await Amplify.Auth.signUp(
        username: 'testuser',
        password: 'password123',
        options: CognitoSignUpOptions(userAttributes: userAttributes),
      );

      print('Sign up success: ${result.isSignUpComplete}');
    } catch (e) {
      print('Error signing up: $e');
    }
  }
}

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

1 回复

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


amplify_auth_repository 是一个用于 Flutter 的插件,它封装了 AWS Amplify 的认证功能,使得在 Flutter 应用中集成和管理用户认证变得更加简单。AWS Amplify 是一个由 AWS 提供的开发平台,用于构建可扩展的移动和 Web 应用程序。

1. 安装和设置

首先,你需要在 pubspec.yaml 文件中添加 amplify_auth_repository 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  amplify_auth_repository: ^1.0.0  # 请使用最新版本

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

2. 初始化 Amplify

在使用 amplify_auth_repository 之前,你需要初始化 Amplify。通常在 main.dart 中初始化:

import 'package:amplify_auth_repository/amplify_auth_repository.dart';
import 'package:amplify_flutter/amplify_flutter.dart';
import 'package:flutter/material.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化 Amplify
  final authRepository = AmplifyAuthRepository();
  await authRepository.configureAmplify();

  runApp(MyApp());
}

3. 配置 Amplify

amplifyconfiguration.dart 中配置 Amplify。这个文件通常由 Amplify CLI 自动生成,包含你的 Amplify 项目的配置信息。

const amplifyconfig = ''' {
  "UserAgent": "aws-amplify-cli/2.0",
  "Version": "1.0",
  "auth": {
    "plugins": {
      "awsCognitoAuthPlugin": {
        "UserAgent": "aws-amplify-cli/0.1.0",
        "Version": "0.1.0",
        "IdentityManager": {
          "Default": {}
        },
        "CredentialsProvider": {
          "CognitoIdentity": {
            "Default": {
              "PoolId": "YOUR_COGNITO_IDENTITY_POOL_ID",
              "Region": "us-east-1"
            }
          }
        },
        "CognitoUserPool": {
          "Default": {
            "PoolId": "YOUR_USER_POOL_ID",
            "AppClientId": "YOUR_APP_CLIENT_ID",
            "Region": "us-east-1"
          }
        },
        "Auth": {
          "Default": {
            "authenticationFlowType": "USER_SRP_AUTH"
          }
        }
      }
    }
  }
}''';

4. 使用 AmplifyAuthRepository

AmplifyAuthRepository 提供了多种方法来管理用户认证,例如注册、登录、登出、获取当前用户等。

注册用户

final authRepository = AmplifyAuthRepository();
final result = await authRepository.signUp(
  username: 'user@example.com',
  password: 'Password123!',
  email: 'user@example.com',
);

if (result.isSuccess) {
  print('User registered successfully');
} else {
  print('Registration failed: ${result.error}');
}

登录用户

final authRepository = AmplifyAuthRepository();
final result = await authRepository.signIn(
  username: 'user@example.com',
  password: 'Password123!',
);

if (result.isSuccess) {
  print('User signed in successfully');
} else {
  print('Sign in failed: ${result.error}');
}

登出用户

final authRepository = AmplifyAuthRepository();
final result = await authRepository.signOut();

if (result.isSuccess) {
  print('User signed out successfully');
} else {
  print('Sign out failed: ${result.error}');
}

获取当前用户

final authRepository = AmplifyAuthRepository();
final user = await authRepository.getCurrentUser();

if (user != null) {
  print('Current user: ${user.username}');
} else {
  print('No user is currently signed in');
}

5. 处理认证状态

你可以使用 Stream 来监听用户的认证状态变化:

final authRepository = AmplifyAuthRepository();
authRepository.authStream.listen((authState) {
  if (authState == AuthState.signedIn) {
    print('User is signed in');
  } else if (authState == AuthState.signedOut) {
    print('User is signed out');
  }
});

6. 错误处理

在使用 amplify_auth_repository 时,务必处理可能的错误。每个方法返回的 Result 对象都包含一个 error 属性,可以用来检查操作是否成功。

final result = await authRepository.signIn(
  username: 'user@example.com',
  password: 'Password123!',
);

if (result.isSuccess) {
  print('Sign in successful');
} else {
  print('Sign in failed: ${result.error}');
}
回到顶部