使用 Flutter 设置安卓应用示例 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Flutter 设置安卓应用示例

在本教程中,您将在 Android Studio 中创建一个移动应用程序,您可以在其中模拟设备并测试用户的注册、确认和登录。此示例应用程序在 Flutter 中为安卓系统创建了一个基本的 Amazon Cognito 用户池移动客户端。如果您已经有使用 Flutter 开发移动应用程序的经验,请从 GitHub中下载示例应用程序

以下屏幕截图显示了在虚拟 Android 设备上运行的应用程序。

虚拟化 Android 示例应用程序的注册页面屏幕截图。

创建用户池过程为您设置了一个与示例应用程序配合使用的用户池。如果您的用户池满足以下要求,则可以跳过此步骤:

  • 用户可以使用自己的电子邮件地址登录。Cognito 用户池登录选项:电子邮件。

  • 用户名不区分大小写。用户名要求:未选择 “将用户名区分大小写”。

  • 不需要多因素身份验证 (MFA)。MFA 执法:可选 M FA。

  • 您的用户池通过电子邮件验证用于确认用户配置文件的属性。要验证的属性发送电子邮件、验证电子邮件地址

  • 电子邮件是唯一的必填属性。必填属性电子邮件

  • 用户可以在您的用户池中自行注册。自行注册:选中 “启用自助注册”。

  • 您的初始应用程序客户端是允许使用用户名和密码登录的公共客户端。应用程序类型公共客户端身份验证流程ALLOW_USER_PASSWORD_AUTH

创建新的用户池
  1. 转到 Amazon Cognito 控制台。如果出现提示,请输入您的 Amazon 凭据。

  2. 选择 “创建用户池” 按钮。您可能需要从左侧导航窗格中选择 “用户池” 才能显示此选项。

  3. 在页面右上角,选择 Create a user pool(创建用户池)以开启用户池创建向导。

  4. 在 “配置登录体验” 中,您可以选择要用于此用户池的身份提供商 (IdPs)。有关更多信息,请参阅 通过第三方添加用户池登录

    1. 在 “身份验证提供程序” 下,对于提供者类型,请确保仅选择 Cognito 用户池

    2. 对于 Cognito 用户池登录选项,请选择用户名。不要选择任何其他用户名要求

    3. 将所有其他选项保留为默认值,然后选择 “下一步”。

  5. 配置安全要求中,您可以选择密码策略、多因素身份验证 (MFA) 要求和用户帐户恢复选项。有关更多信息,请参阅 使用 Amazon Cognito 用户池安全功能

    1. 对于密码策略,请确认密码策略模式已设置为 Cognito 默认值

    2. 多重身份验证下,对于强制执行 MFA,请选择可选 MF A。

    3. 对于 MFA 方法,请选择身份验证器应用程序和短信

    4. 恢复用户帐户,请确认已选中 “启用自助服务帐户恢复”,并将用户帐户恢复消息传送方式设置为 “仅限电子邮件”。

    5. 将所有其他选项保留为默认值,然后选择 “下一步”。

  6. “配置注册体验” 中,您可以确定新用户在注册为新用户时将如何验证其身份,以及在用户注册流程中哪些属性应为必填属性或可选属性。有关更多信息,请参阅 管理用户池中的用户

    1. 确认已选中 “启用自助注册”。此设置会打开您的用户池,让互联网上的任何人都可以注册。这是为示例应用程序而设计的,但在生产环境中应谨慎应用此设置。

    2. Cognito 辅助验证和确认下,确认已选中 “允许 Cognito 自动发送消息进行验证和确认” 复选框。

    3. 确认 “要验证的属性” 设置为 “发送电子邮件,验证电子邮件地址”。

    4. “验证属性更改” 下,确认已选择默认选项:选中 “待更新时保留原始属性值”,“待更新时处于活动状态” 属性值设置为 “电子邮件地址”。

    5. “必填属性” 下,确认基于先前选择的必填属性显示电子邮件

      重要

      对于此示例应用程序,您的用户池不得将 phone_number 设置为必填属性。如果 phone_n umber 显示为必填属性,请查看并更新您之前的选择:

      • 可选 MFA仅限电子邮件用于用户账户恢复消息的传送方式

      • 发送电子邮件,验证要验证的属性的电子邮件地址

    6. 将所有其他选项保留为默认值,然后选择 “下一步”。

  7. 配置消息传送中,您可以配置与亚马逊简单电子邮件服务和亚马逊简单通知服务的集成,向您的用户发送电子邮件和短信,用于注册、账户确认、MFA 和账户恢复。有关更多信息,请参阅 Amazon Cognito 用户池的电子邮件设置Amazon Cognito 用户池的短信设置

    1. 对于电子邮件提供商,选择使用 Cognito 发送电子邮件,然后使用 Amazon Cognito 提供的默认电子邮件发件人。此低电子邮件量设置足以进行应用程序测试。在使用亚马逊简单电子邮件服务 (Amazon SES) 验证电子邮件地址并选择 “使用亚马逊 SES 发送电子邮件” 后,您可以返回。

    2. 对于 SMS,请选择创建新的 IAM 角色并输入 I AM 角色名称。这将创建一个向 Amazon Cognito 授予发送短信权限的角色。

    3. 将所有其他选项保留为默认值,然后选择 “下一步”。

  8. 集成您的应用程序中,您可以命名用户池、配置托管用户界面和创建应用程序客户端。有关更多信息,请参阅 添加带有托管 UI 的应用程序客户端。示例应用程序不使用托管 UI。

    1. 用户池名称下,输入用户池名称

    2. 不要选择 “使用 Cognito 托管的用户界面”。

    3. 在 “初始应用程序客户端” 下,确认应用程序类型已设置为 “公共客户端”。

    4. 在 “客户密钥” 下,确认已选中 “不生成客户机密钥”。

    5. 输入应用程序客户端名称

    6. 展开高级应用程序客户端设置ALLOW_USER_PASSWORD_AUTH添加到身份验证流程列表中。

    7. 将所有其他选项保留为默认值,然后选择 “下一步”。

  9. 在 “查看并创建” 屏幕中查看您的选择,并根据需要修改任何选择。如果您对用户池配置感到满意,请选择创建用户池以继续。

  10. 用户池页面中,选择您的新用户池。

  11. 在 “用户池概述” 下,记下您的用户池 ID。在创建示例应用程序时,您将提供此字符串。

  12. 选择 “应用程序集成” 选项卡,然后找到 “应用程序客户端和分析” 部分。选择您的新应用程序客户端。记下您的客户端 ID

创建应用程序

创建安卓应用示例
  1. 安装安卓工作室命令行工具

  2. 在安卓工作室中,安装 Flutter 插件

  3. 在此示例应用程序中,根据cognito_flutter_mobile_app目录内容创建一个新的 Android Studio 项目。

    1. << YOUR CLIENT ID>>使用您之前创建的用户池和应用程序客户端的 ID 编辑assets/config.json并替换<<YOUR USER POOL ID>>和。

  4. 安装 Flutter

    1. 将 Flutter 添加到你的 PATH 变量中。

    2. 使用以下命令接受许可证。

      flutter doctor --android-licenses

    3. 验证您的 Flutter 环境并安装所有缺失的组件。

      flutter doctor

      1. 如果缺少任何组件,flutter doctor -v请运行以了解如何修复问题。

    4. 切换到新 Flutter 项目的目录并安装依赖项。

      1. 运行 flutter pub add amazon_cognito_identity_dart_2

    5. 运行 flutter pub add flutter_secure_storage

  5. 创建一台虚拟的安卓设备。

    1. 在 Android Studio 用户界面中,使用设备管理器创建新设备。

    2. 在 CLI 中运行flutter emulators --create --name android-device

  6. 启动您的虚拟安卓设备。

    1. 在 Android Studio 用户界面中,选择虚拟设备旁边的开始 图标。

    2. 在 CLI 中运行flutter emulators --launch android-device

  7. 在虚拟设备上启动您的应用程序。

    1. 在 Android Studio 用户界面中,选择部署 图标。

    2. 在 CLI 中运行flutter run

  8. 在 Android Studio 中导航到你正在运行的虚拟设备。

  9. 使用有效的电子邮件地址注册新用户。

  10. 从您的电子邮件中检索确认码。在应用程序中输入确认码。

  11. 使用您的用户名和密码登录。