使用 Flutter 设置安卓应用示例 - Amazon Cognito

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

使用 Flutter 设置安卓应用示例

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

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

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

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

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

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

  • 不需要多因素身份验证 (MFA)。MFA强制执行可选MFA

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

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

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

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

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

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

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

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

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

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

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

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

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

    2. 多因素身份验证下,为MFA强制执行,选择可选MFA

    3. 对于MFA方法,请选择身份验证器应用程序SMS消息

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

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

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

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

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

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

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

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

      重要

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

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

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

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

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

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

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

    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. 编辑assets/config.json<<YOUR USER POOL ID>><< YOUR CLIENT ID>>替换为之前创建IDs的用户池和应用程序客户端的和。

  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 中GUI,使用设备管理器创建新设备。

    2. 在里面CLI,跑flutter emulators --create --name android-device

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

    1. 在 Android Studio 中GUI,选择虚拟设备旁边的开始 Play button icon with a blue triangle pointing to the right. 图标。

    2. 在里面CLI,跑flutter emulators --launch android-device

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

    1. 在 Android Studio 中GUI,选择部署 Green play button icon representing a start or play action. 图标。

    2. 在里面CLI,跑flutter run

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

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

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

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