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。

  1. 确保您的系统安装了 Flutter 或 Dart (3.4.x) SDK。
  2. 设置一个 cognito 项目和服务账户。
  3. 设置一个 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');
  }
}

步骤说明:

  1. 导入包

    import 'package:cognito_dart_auth_sdk/cognito_dart_auth_sdk.dart';
    
  2. 为 Web 初始化 cognito 应用

    cognitoApp.initializeAppWithEnvironmentVariables(
      apiKey: 'YOUR-API-KEY',
      projectId: 'YOUR-PROJECT-ID',
      bucketName: 'Your Bucket Name',
    );
    
  3. 为移动设备加载服务账户 JSON 文件

    String serviceAccountContent = await rootBundle.loadString(
      'assets/service_account.json',
    );
    
  4. 使用服务账户内容初始化 cognito

    await cognitoApp.initializeAppWithServiceAccount(
      serviceAccountContent: serviceAccountContent,
    );
    
  5. 获取 cognito 身份验证实例

    final auth = cognitoApp.instance.getAuth();
    

文档

如需更多信息,请参考 Gitbook 文档

示例文件

以下是一个示例文件,用于遵循 Dart 命名约定:

example/README.md

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

1 回复

更多关于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. 密码重置

使用 forgotPasswordconfirmForgotPassword 方法进行密码重置:

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');
}
回到顶部