如何将服务器生成的Firebase AppCheck调试令牌注入Android应用?
解决Flutter Firebase AppCheck调试令牌重复添加问题
核心思路
直接使用Firebase支持的自定义调试令牌,通过Android原生代码注入,避免每次卸载重装生成新令牌。
步骤说明
预先生成并配置调试令牌
在Firebase控制台的AppCheck模块中,进入「调试」标签页,手动生成或通过服务器接口获取调试令牌,将其添加到允许的调试令牌列表中。Android原生代码注入令牌
打开Flutter项目的Android端代码(以Kotlin为例,Java写法类似):- 路径:
android/app/src/main/kotlin/[你的应用包名]/MainActivity.kt - 在
onCreate方法中初始化AppCheck时,设置固定调试令牌:import com.google.firebase.appcheck.FirebaseAppCheck import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory import android.os.Bundle import io.flutter.embedding.android.FlutterActivity class MainActivity : FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 仅在Debug模式下使用固定调试令牌 if (BuildConfig.DEBUG) { val debugFactory = DebugAppCheckProviderFactory.getInstance() // 替换成你预先生成的调试令牌 debugFactory.setDebugToken("your-custom-debug-token-here") FirebaseAppCheck.getInstance().installAppCheckProviderFactory(debugFactory) } } }
若使用Java:
import com.google.firebase.appcheck.FirebaseAppCheck; import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory; import android.os.Bundle; import io.flutter.embedding.android.FlutterActivity; public class MainActivity extends FlutterActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (BuildConfig.DEBUG) { DebugAppCheckProviderFactory debugFactory = DebugAppCheckProviderFactory.getInstance(); debugFactory.setDebugToken("your-custom-debug-token-here"); FirebaseAppCheck.getInstance().installAppCheckProviderFactory(debugFactory); } } }- 路径:
关键注意事项
- 务必确保注入的令牌已在Firebase控制台的调试令牌列表中登记,否则AppCheck验证会失败。
- 一定要通过
BuildConfig.DEBUG限制仅在调试构建中使用,绝对不要将调试令牌逻辑混入Release包,避免安全风险。 - Flutter端无需额外修改,Firebase AppCheck插件会自动复用原生层的配置。
内容的提问来源于stack exchange,提问作者nsk
相关产品推荐
相关产品推荐

