查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

开始在 Flutter 应用中使用 App Check

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本页向您展示如何在 Flutter 应用中启用 App Check,使用默认提供程序:Android 上的 Play Integrity、Apple 平台上的 Device Check 和 web 上的 reCAPTCHA v3。当您启用 App Check 时,您有助于确保只有您的应用可以访问您项目的 Firebase 资源。请参阅此功能的概述

1. 设置您的 Firebase 项目

  1. 如果您还没有这样做,请安装并初始化 FlutterFire

  2. 在 Firebase 控制台的“项目设置”>“应用检查”部分注册您的应用以使用 Play Integrity、设备检查和 reCAPTCHA 提供程序的应用检查。

    您通常需要注册项目的所有应用,因为一旦您为 Firebase 产品启用强制执行,只有已注册的应用才能访问该产品的后端资源。

  3. 可选:在应用注册设置中,为提供商发布的应用检查令牌设置自定义生存时间 (TTL)。您可以将 TTL 设置为 30 分钟到 7 天之间的任何值。更改此值时,请注意以下权衡:

    • 安全性:较短的 TTL 可提供更强的安全性,因为它减少了泄露或拦截的令牌可能被攻击者滥用的窗口。
    • 性能:较短的 TTL 意味着您的应用将更频繁地执行证明。由于应用程序证明过程每次执行都会增加网络请求的延迟,因此较短的 TTL 可能会影响应用程序的性能。
    • 配额和成本:较短的 TTL 和频繁的重新证明会更快地耗尽您的配额,而对于付费服务,可能会花费更多。请参阅配额和限制

    对于大多数应用来说,默认 TTL 是合理的。请注意,App Check 库以大约一半的 TTL 持续时间刷新令牌。

2. 将 App Check 库添加到您的应用程序

  1. 在 Flutter 项目的根目录下,运行以下命令来安装插件:

    flutter pub add firebase_app_check
    
  2. 完成后,重新构建您的 Flutter 应用程序:

    flutter run
    

3.初始化应用检查

将以下初始化代码添加到您的应用中,使其在您使用任何 Firebase 服务(例如 Storage)之前运行,但在调用Firebase.initializeApp()之后运行;

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';

// Import the firebase_app_check plugin
import 'package:firebase_app_check/firebase_app_check.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  await FirebaseAppCheck.instance.activate(
    webRecaptchaSiteKey: 'recaptcha-v3-site-key',
    // Default provider for Android is the Play Integrity provider. You can use the "AndroidProvider" enum to choose
    // your preferred provider. Choose from:
    // 1. debug provider
    // 2. safety net provider
    // 3. play integrity provider
    androidProvider: AndroidProvider.debug,
  );
  runApp(App());
}

下一步

在您的应用中安装 App Check 库后,开始将更新的应用分发给您的用户。

更新后的客户端应用将开始向 Firebase 发出的每个请求发送 App Check 令牌,但 Firebase 产品不需要令牌有效,直到您在 Firebase 控制台的 App Check 部分启用强制执行。

监控指标并启用强制执行

但是,在启用强制执行之前,您应该确保这样做不会破坏您现有的合法用户。另一方面,如果您发现对应用资源的使用可疑,您可能希望尽快启用强制执行。

为了帮助做出此决定,您可以查看您使用的服务的 App Check 指标:

启用应用检查强制

当您了解 App Check 将如何影响您的用户并准备好继续时,您可以启用 App Check 强制:

在调试环境中使用 App Check

如果在您为 App Check 注册了您的应用程序后,您希望在 App Check 通常不会归类为有效的环境中运行您的应用程序,例如开发期间的模拟器或持续集成 (CI) 环境,您可以创建使用 App Check 调试提供程序而不是真正的证明提供程序的应用程序的调试版本。

请参阅在 Flutter 应用程序中通过调试提供程序使用 App Check