You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用Android模拟器调试Firebase AppCheck请求全未验证如何解决

问题原因

你的DebugAppCheckProvider没有被正确加载,AppCheck仍然在尝试使用SafetyNet提供商发起校验,所以才会出现exchangeSafetyNetToken的403请求,这个问题和模拟器本身无关,调试模式下完全可以完成AppCheck校验。

修复步骤

  • 修正MainActivity.kt的onCreate执行顺序,必须先调用super.onCreate再安装AppCheck提供商,否则Flutter初始化逻辑会覆盖你提前设置的提供商配置,修改后代码如下:
import io.flutter.embedding.android.FlutterActivity
import android.os.Bundle
import android.util.Log
import com.google.firebase.FirebaseApp
import com.google.firebase.appcheck.FirebaseAppCheck
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory

class MainActivity: FlutterActivity() {
    // For Debug Only. Do not do this for Production
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState) // 移到方法最开头
        FirebaseApp.initializeApp(this)
        Log.e("MainActivity", "onCreate")
        val firebaseAppCheck = FirebaseAppCheck.getInstance()
        firebaseAppCheck.installAppCheckProviderFactory(DebugAppCheckProviderFactory.getInstance())
    }
}
  • 修正Flutter侧的AppCheck激活配置,显式指定安卓端使用debug提供商,避免插件默认使用SafetyNet/Play Integrity提供商:
// Initialize AppCheck
await FirebaseAppCheck.instance.activate(
  // 调试环境下指定debug提供商,生产环境替换为对应的正式提供商即可
  androidProvider: AndroidAppCheckProvider.debug,
);
  • 卸载模拟器上的现有应用后重新安装运行,获取logcat中新输出的调试令牌,确认已经添加到Firebase控制台对应安卓应用的调试令牌白名单中。
  • 确认你测试访问的是正确Firebase项目的Realtime Database,不存在项目配置串扰的问题。

完成以上配置后再发起数据库请求,AppCheck就会使用调试模式完成校验,控制台会显示验证通过的请求,不需要切换到真机发布模式。

内容的提问来源于stack exchange,提问作者acsc001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:09:03