Flutter认证管理插件cognito_dart_auth_sdk的使用
cognito Dart Admin Auth SDK
概述
cognito Dart Admin Auth SDK 提供了一组强大且灵活的工具,用于在 Dart 或 Flutter 项目中执行身份验证流程。这是 cognito 身份验证的 Dart 实现。
特性
- 用户管理: 使用全面的用户管理功能集无缝管理用户帐户。
- 自定义令牌生成: 通过生成自定义令牌将 cognito 身份验证与后端服务集成。
- 生成电子邮件操作链接: 创建并发送电子邮件操作链接到用户的邮箱以进行电子邮件验证、密码重置等。
- ID Token 验证: 安全地验证 ID Token,确保应用程序用户已通过身份验证并授权使用应用。
- 管理 SAML/OIDC 提供商配置: 管理和配置 SAML 和 OIDC 提供商以支持身份验证和简单的单点登录解决方案。
开始使用
如果您想在 Flutter 项目中使用 cognito Dart Admin Auth SDK 来实现 cognito 身份验证,请按照以下说明设置身份验证 SDK。
- 确保您的系统安装了 Flutter 或 Dart (3.4.x) SDK。
- 设置一个 cognito 项目和服务账户。
- 设置一个 Flutter 项目。
安装
对于 Flutter,请运行以下命令:
flutter pub add cognito_dart_auth_sdk
您也可以手动编辑 pubspec.yaml
文件:
dependencies:
cognito_dart_auth_sdk: ^0.0.1-pre+11
然后运行以下命令完成安装:
flutter pub get
注意: SDK 版本可能会有所不同。
使用示例
以下是使用 cognito_dart_auth_sdk
的完整示例代码:
import 'dart:io';
import 'package:bot_toast/bot_toast.dart';
import 'package:cognito/screens/splash_screen/splash_screen.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:cognito_dart_auth_sdk/cognito_dart_auth_sdk.dart';
import 'package:flutter/services.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
try {
if (kIsWeb) {
// 在 Web 上初始化 cognito
debugPrint('正在为 Web 初始化 cognito...');
cognitoApp.initializeAppWithEnvironmentVariables(
apiKey: 'YOUR-API-KEY',
projectId: 'YOUR-PROJECT-ID',
bucketName: 'Your Bucket Name',
);
debugPrint('cognito 已成功为 Web 初始化。');
} else {
if (Platform.isAndroid || Platform.isIOS) {
debugPrint('正在为移动设备初始化 cognito...');
// 加载服务账户 JSON 文件
String serviceAccountContent = await rootBundle.loadString(
'assets/service_account.json',
);
debugPrint('服务账户已加载。');
// 使用服务账户内容初始化 cognito
await cognitoApp.initializeAppWithServiceAccount(
serviceAccountContent: serviceAccountContent,
);
debugPrint('cognito 已成功为移动设备初始化。');
}
}
// 获取 cognito 身份验证实例
final auth = cognitoApp.instance.getAuth();
debugPrint('cognito 身份验证实例已获取。');
runApp(const MyApp());
} catch (e, stackTrace) {
debugPrint('cognito 初始化失败: $e');
debugPrint('堆栈跟踪: $stackTrace');
}
}
步骤说明:
-
导入包:
import 'package:cognito_dart_auth_sdk/cognito_dart_auth_sdk.dart';
-
为 Web 初始化 cognito 应用:
cognitoApp.initializeAppWithEnvironmentVariables( apiKey: 'YOUR-API-KEY', projectId: 'YOUR-PROJECT-ID', bucketName: 'Your Bucket Name', );
-
为移动设备加载服务账户 JSON 文件:
String serviceAccountContent = await rootBundle.loadString( 'assets/service_account.json', );
-
使用服务账户内容初始化 cognito:
await cognitoApp.initializeAppWithServiceAccount( serviceAccountContent: serviceAccountContent, );
-
获取 cognito 身份验证实例:
final auth = cognitoApp.instance.getAuth();
文档
如需更多信息,请参考 Gitbook 文档。
示例文件
以下是一个示例文件,用于遵循 Dart 命名约定:
example/README.md
更多关于Flutter认证管理插件cognito_dart_auth_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter认证管理插件cognito_dart_auth_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
cognito_dart_auth_sdk
是一个用于在 Flutter 应用中集成 AWS Cognito 认证管理的 Dart SDK。它允许开发者轻松地与 AWS Cognito 服务进行交互,实现用户注册、登录、密码重置等功能。
以下是如何在 Flutter 项目中使用 cognito_dart_auth_sdk
的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 cognito_dart_auth_sdk
依赖:
dependencies:
flutter:
sdk: flutter
cognito_dart_auth_sdk: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 初始化 Cognito 客户端
在你的 Dart 代码中,初始化 Cognito
客户端。你需要提供 AWS Cognito 的用户池 ID、客户端 ID 和区域信息。
import 'package:cognito_dart_auth_sdk/cognito_dart_auth_sdk.dart';
final cognito = Cognito(
userPoolId: 'your-user-pool-id',
clientId: 'your-client-id',
region: 'your-region', // 例如 'us-east-1'
);
3. 用户注册
使用 signUp
方法注册新用户:
try {
final result = await cognito.signUp(
username: 'username',
password: 'password',
userAttributes: {
'email': 'user@example.com',
'phone_number': '+1234567890',
},
);
print('User registered: ${result.userSub}');
} catch (e) {
print('Error during sign up: $e');
}
4. 用户登录
使用 initiateAuth
方法进行用户登录:
try {
final result = await cognito.initiateAuth(
username: 'username',
password: 'password',
);
print('User logged in: ${result.accessToken}');
} catch (e) {
print('Error during login: $e');
}
5. 获取用户信息
使用 getUser
方法获取当前登录用户的信息:
try {
final user = await cognito.getUser(accessToken: 'your-access-token');
print('User info: ${user.username}');
} catch (e) {
print('Error getting user info: $e');
}
6. 密码重置
使用 forgotPassword
和 confirmForgotPassword
方法进行密码重置:
try {
await cognito.forgotPassword(username: 'username');
// 用户会收到一个验证码
await cognito.confirmForgotPassword(
username: 'username',
confirmationCode: '123456', // 用户收到的验证码
newPassword: 'newPassword',
);
print('Password reset successfully');
} catch (e) {
print('Error during password reset: $e');
}
7. 用户注销
使用 globalSignOut
方法注销用户:
try {
await cognito.globalSignOut(accessToken: 'your-access-token');
print('User signed out globally');
} catch (e) {
print('Error during sign out: $e');
}