開始在 Flutter 應用程式中使用 App Check

本頁面說明如何在 Flutter 應用程式中啟用 App Check,並使用預設供應商:Android 上的 Play Integrity、Apple 平台上的 Device Check,以及網頁上的 reCAPTCHA v3。啟用 App Check 後,只有您的應用程式可以存取專案的 Firebase 資源。請參閱這項功能的總覽

1. 設定 Firebase 專案

  1. 如果尚未安裝及初始化 FlutterFire,請先完成此步驟。

  2. 在 Firebase 控制台的「專案設定」>「App Check」部分,為應用程式註冊透過 Play Integrity、Device Check 和 reCAPTCHA 供應商使用 App Check。

    您通常需要註冊專案的所有應用程式,因為一旦啟用 Firebase 產品的強制執行功能,只有已註冊的應用程式才能存取產品的後端資源。

  3. 選用:在應用程式註冊設定中,為供應商核發的 App Check 權杖設定自訂存留時間 (TTL)。您可以將 TTL 設定為介於 30 分鐘至 7 天之間的任何值。變更這個值時,請注意下列取捨:

    • 安全性:存留時間越短,安全性就越高,因為這樣可縮短攻擊者濫用外洩或遭攔截權杖的時間範圍。
    • 效能:TTL 較短表示應用程式會更頻繁地執行認證。應用程式驗證程序每次執行時,都會增加網路要求延遲時間,因此存留時間較短可能會影響應用程式效能。
    • 配額和費用:TTL 較短且重新認證頻率較高,會更快耗盡配額,且對於付費服務而言,可能需要支付更多費用。請參閱「配額與限制」。

    預設存留時間適用於大多數應用程式。請注意,App Check 程式庫會在 TTL 時間長度的一半左右重新整理權杖。

2. 在應用程式中加入 App Check 程式庫

  1. 在 Flutter 專案的根目錄中,執行下列指令來安裝外掛程式:

    flutter pub add firebase_app_check
    
  2. 完成後,請重建 Flutter 應用程式:

    flutter run
    

3. 初始化 App Check

將下列初始化程式碼加入應用程式,讓它在您使用任何 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(
    // You can also use a `ReCaptchaEnterpriseProvider` provider instance as an
    // argument for `webProvider`
    webProvider: ReCaptchaV3Provider('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,
    // Default provider for iOS/macOS is the Device Check provider. You can use the "AppleProvider" enum to choose
        // your preferred provider. Choose from:
        // 1. Debug provider
        // 2. Device Check provider
        // 3. App Attest provider
        // 4. App Attest provider with fallback to Device Check provider (App Attest provider is only available on iOS 14.0+, macOS 14.0+)
    appleProvider: AppleProvider.appAttest,
  );
  runApp(App());
}

後續步驟

在應用程式中安裝 App Check 程式庫後,即可開始向使用者發布更新版應用程式。

更新後的用戶端應用程式會開始在每次向 Firebase 發出要求時,一併傳送 App Check 權杖,但您必須在 Firebase 控制台的 App Check 專區啟用強制執行功能,Firebase 產品才會要求權杖有效。

監控指標並啟用強制執行功能

不過,啟用強制執行前,請先確認這麼做不會影響現有的合法使用者。另一方面,如果發現應用程式資源有可疑的使用情形,建議盡快啟用強制執行功能。

如要協助您做出這項決定,可以查看所用服務的 App Check 指標:

啟用 App Check 強制執行功能

瞭解 App Check 對使用者的影響後,即可啟用 App Check 強制執行功能:

在偵錯環境中使用 App Check

在註冊應用程式以使用 App Check 後,如果您想在 App Check 通常不會歸類為有效的環境中執行應用程式 (例如開發期間的模擬器,或是持續整合 (CI) 環境),可以建立應用程式的偵錯版本,使用 App Check 偵錯供應器,而非實際的認證供應器。

請參閱「在 Flutter 應用程式中搭配偵錯供應商使用 App Check」。