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

Flutter Firebase Auth/Firestore闲置后需重新登录才能正常工作

Flutter Firebase闲置后Auth/Firestore失效的解决方案

针对你遇到的「应用闲置30分钟后Firebase功能失效,需重新登录恢复」的问题,结合错误日志中的核心提示Requests to this API securetoken.googleapis.com method google.identity.securetoken.v1.SecureToken.GrantToken are blocked,可以按以下步骤排查解决:

1. 核查Firebase项目API权限

  • 登录Firebase控制台,进入目标项目的「API库」(路径:项目设置 → 集成与API → API库)
  • 搜索并确认「Secure Token Service API」「Google Identity Toolkit API」「Firebase Auth API」均处于启用状态
  • 检查上述API的配额使用情况,确保未达到请求上限(闲置后触发失败可能与配额周期刷新有关)

2. 捕获令牌刷新异常并处理

Firebase Auth默认自动刷新令牌,但刷新失败时无默认处理逻辑,导致后续请求无有效凭证。可添加监听主动处理:

FirebaseAuth.instance.userChanges().listen((user) {
  if (user != null) {
    // 强制刷新令牌并捕获错误
    user.getIdToken(true).catchError((error) {
      // 令牌刷新失败,清除会话并引导重新登录
      FirebaseAuth.instance.signOut();
      // 此处添加跳转到登录页的逻辑
    });
  }
});

在Firestore操作前主动校验令牌有效性:

Future<void> _ensureValidAuthToken() async {
  final currentUser = FirebaseAuth.instance.currentUser;
  if (currentUser != null) {
    try {
      // 获取令牌结果,验证有效性
      await currentUser.getIdTokenResult();
    } catch (_) {
      // 验证失败,注销并跳转登录
      await FirebaseAuth.instance.signOut();
      // Navigator.pushReplacement(context, MaterialPageRoute(builder: (_) => LoginPage()));
    }
  }
}

// 调用示例
await _ensureValidAuthToken();
await FirebaseFirestore.instance.collection('your_collection').add({'data': 'value'});

3. 配置App Check消除警告

日志中提示No AppCheckProvider installed,虽然不是直接触发原因,但可能影响Auth令牌的验证链路。在Flutter中配置App Check:

  • 添加依赖到pubspec.yaml:
firebase_app_check: ^0.2.1+10
  • 在应用初始化时激活:
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  // 生产环境使用playIntegrity/appAttest,测试用debug
  await FirebaseAppCheck.instance.activate(
    androidProvider: AndroidProvider.playIntegrity,
    appleProvider: AppleProvider.appAttest,
  );
  runApp(const MyApp());
}

注意:Android需在Play Console配置Play Integrity,iOS需配置App Attest,测试阶段可临时用AndroidProvider.debug。

4. 检查设备系统限制

  • 确认设备未开启严格省电模式,允许应用在后台访问网络
  • 检查应用的后台活动权限,确保Firebase相关服务能在闲置时正常运行

5. 更新Firebase依赖版本

日志中使用的Firebase Auth(22.3.1)和Firestore(24.11.0)版本较旧,可能存在已知的令牌刷新bug。更新到最新稳定版:

firebase_core: ^2.25.4
firebase_auth: ^4.17.8
cloud_firestore: ^4.15.7

内容的提问来源于stack exchange,提问作者Ahmed El Sayed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:57:14