😆
【Flutter】AppCheck導入とエラーハンドリング
AppCheckとは
不正行為からAPIを保護し、サービスへのアクセスを保護する追加のセキュリティ層です。 トラフィックがアプリから発信されていることを証明し、有効な認証情報のないトラフィックをブロックします。[1] ぜひこちらも見てみてください!
画像参照先開発者向け
AppCheckが適用されている環境で作業する場合デバッグトークンが必要です。また機種やOSを変更した際にも再度デバッグトークンを表示する必要があります。
セットアップ
1: Firebaseプロジェクトを追加する(今回は省略)
2: アプリに App Check ライブラリを追加する
flutter pub add firebase_app_check
flutter run
3: App Check を初期化する
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
//Firebase.initializeApp() を呼び出した後すぐに実行する
//-----AppCheckの初期化コード-----//
await FirebaseAppCheck.instance.activate(
appleProvider:
kReleaseMode ? AppleProvider.deviceCheck : AppleProvider.debug,
androidProvider:
kReleaseMode ? AndroidProvider.playIntegrity :
AndroidProvider.debug,
);
//------------------------------//
runApp(App());
}
終わり!!
適用方法
AppCheckを有効後
Firebase > AppCheck 非適用から適用済みとするだけ。※非適用状態でもモニタリングは可能
デバッグトークンの設定
AppCheckが適用されている環境で作業する場合デバッグトークンが必要です。また機種やOSを変更した際にも再度デバッグトークンを表示する必要があります。
ios
$ flutter run
//アプリ側でFirebaseAppCheckが初期化された時に以下が表示される
Firebase App Check Debug Token: **ここに表示されるトークンを追加**
Android:
$ flutter run
//アプリ側でFirebaseAppCheckが初期化された時に以下が表示される
D DebugAppCheckProvider: Enter this debug secret into the allow list in
the Firebase Console for your project: **ここに表示されるトークンを追加**
備考: Firebase App Check APIが有効になっていない場合、次章に記載されている403エラーが発生する。
エラーハンドリング
不正なリクエストの場合
----------------FIREBASE CRASHLYTICS----------------
[cloud_firestore/permission-denied] The caller does not have permission to execute the specified operation.
前章の手順でデバッグトークンを設定する。
Firebase > AppCheck > アプリ > デバッグトークンを表示 > デバッグトークンを追加
403エラー ※internal error等もここに該当する
W/LocError getting App Check token; using placeholder token instead.
Error: com.google.firebase.FirebaseException:
Error returned from API. code: 403 body:
Firebase App Check API has not been used in project **12桁のID** before or it is disabled.
Enable it by visiting https://console.developers.google.com/apis/api/firebaseappcheck.googleapis.com/overview?project=**12桁のID** then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
Firebase App Check APIが有効になっておらず、App Check Tokenを取得できていない。
//以下のように記載がある
Enable it by visiting https://console.developers.google.com/apis/api/firebaseappcheck.googleapis.com/overview?project=**12桁のID** then retry.
指示されているwebサイトに移動しFirebase App Check APIを有効にする。
以下のようにAPIが有効となればOK
Discussion