如何在 Flutter 应用中实现 App Check

Tob*_*sen 8 firebase flutter firebase-app-check

我正在尝试在 Android 版 Flutter 应用程序中实现 App Check,并遵循 flutterfire 文档。我已经完成了此处概述的安装部分: https: //firebase.flutter.dev/docs/app-check/overview 现在我正在按照此文档进行使用: https: //firebase.flutter.dev/docs/app-检查/使用

await FirebaseAppCheck.instance.activate(webRecaptchaSiteKey: 'recaptcha-v3-site-key');因此,我在调用初始化 firebase 之后将其添加到我的 Main 方法中。

现在我需要使用 App Check 启用调试,文档说我应该将此依赖项添加到我的 app/build.gradle 文件中:implementation 'com.google.firebase:firebase-appcheck-debug:16.0.0-beta01'并将以下代码片段添加到我的 MainActivity.java onCreate 方法中:

import com.google.firebase.appcheck.FirebaseAppCheck;

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(DebugAppCheckProviderFactory.getInstance());
Run Code Online (Sandbox Code Playgroud)

我尝试通过在项目根文件夹中使用以下命令创建 MainActivity.java 来做到这一点:flutter create -a java .

所以我的 MainActivity.java 看起来像这样:

import io.flutter.embedding.android.FlutterActivity;
import com.google.firebase.appcheck.FirebaseAppCheck;

public class MainActivity extends FlutterActivity {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            FirebaseApp.initializeApp(/*context=*/ this);
            FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
            firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
      }
}
Run Code Online (Sandbox Code Playgroud)

当尝试在调试模式下运行应用程序时,我收到此错误: Execution failed for task ':app:compileDebugJavaWithJavac'.

我缺少什么?看到其他帖子也有同样的问题,但没有解决。

小智 -2

这应该是你的main.dart

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

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  await FirebaseAppCheck.instance.activate();
}
Run Code Online (Sandbox Code Playgroud)

注意:await FirebaseAppCheck.instance.activate();没有适用webRecaptchaSiteKey: 'recaptcha-v3-site-key'于 Android/iOS 的应用程序

这应该是你的MainActivity.kt

package com.example.app // your package

import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import com.google.firebase.FirebaseApp
import com.google.firebase.appcheck.FirebaseAppCheck
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory

class MainActivity: FlutterActivity() {
    private val CHANNEL = "samples.flutter.dev/example"

    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler {
            call, result ->
            FirebaseApp.initializeApp(/*context=*/this)
            val firebaseAppCheck = FirebaseAppCheck.getInstance()
            firebaseAppCheck.installAppCheckProviderFactory(
                    DebugAppCheckProviderFactory.getInstance()
            )
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我不明白我应该使用什么频道值? (3认同)
  • 这没有任何意义 (2认同)