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

安卓FCM应用如何清除persistedinstallation.json中的AuthToken

Firebase FCM 清除persistedinstallation.json中的AuthToken方案

针对你遇到的persistedinstallation.json存储AuthToken的问题,这里提供几种直接可行的解决办法:

一、清除已存在的AuthToken

  • 手动删除文件并重置安装ID
    在应用启动或合适的时机执行以下代码,删除旧的存储文件并重置Firebase安装信息:

    val file = File(context.filesDir, "persistedinstallation.json")
    if (file.exists()) {
        file.delete()
    }
    // 触发安装ID重置,避免旧数据残留
    FirebaseInstallations.getInstance().delete()
    

    执行后Firebase会重新生成安装数据,但需要配合后续配置避免AuthToken再次写入。

  • 修改文件移除AuthToken字段
    如果不想删除整个文件,可以读取文件内容后移除敏感字段再写回:

    val file = File(context.filesDir, "persistedinstallation.json")
    if (file.exists()) {
        val jsonContent = file.readText()
        val jsonObj = JSONObject(jsonContent)
        jsonObj.remove("AuthToken")
        file.writeText(jsonObj.toString())
    }
    

二、配置Firebase避免存储AuthToken

  • 关闭Installations自动持久化
    初始化Firebase时,通过配置关闭Installations的自动持久化功能,阻止AuthToken写入本地文件:

    val installationsConfig = FirebaseInstallationsSettings.Builder()
        .setAutoManageEnabled(false)
        .build()
    FirebaseInstallations.getInstance().settings = installationsConfig
    

    关闭自动管理后,需要你手动处理令牌的获取与存储,建议用Android Keystore这类安全存储方案保存必要数据。

  • 直接使用FCM令牌,绕过Installations持久化
    如果你的场景不需要依赖Installations的AuthToken,可以直接调用FCM令牌获取接口,完全绕过Installations的本地存储逻辑:

    FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
        if (task.isSuccessful) {
            val fcmToken = task.result
            // 将令牌存入Keystore等安全位置,不要明文存在文件里
        }
    }
    

三、关键注意点

  • 调用FirebaseInstallations.delete()会导致旧的FCM令牌失效,需要重新获取新令牌。
  • 所有敏感数据务必用Android Keystore存储,绝对不能明文写入本地文件。
  • 测试时要确认操作后,persistedinstallation.json里确实没有AuthToken字段,或文件已被正确重置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:04:06