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

Google登录后重启应用无法获取currentUser数据问题求助

解决GoogleSignIn重启应用后currentUser为null的问题

核心问题

你每次调用GoogleSignIn()都会创建一个全新的实例,而用户的登录状态是绑定在首次登录时使用的那个实例上的。新实例无法读取到之前实例保存的登录会话,导致currentUser返回null。

解决方案

1. 复用同一个GoogleSignIn实例(推荐)

在应用全局或顶层位置创建一个单例实例,整个应用中统一使用这个实例处理登录、状态检查和用户信息获取:

// 全局单例,放在App入口或单独的工具类中
final GoogleSignIn googleSignIn = GoogleSignIn();

// 登录逻辑
try {
  await googleSignIn.signIn();
} on Exception catch (e) {
  print(e);
}

// 重启应用后检查登录状态
bool isSignedIn = await googleSignIn.isSignedIn();
if (isSignedIn) {
  isLogin = true;
  // 正常获取用户数据
  GoogleSignInAccount? user = googleSignIn.currentUser;
  String? userId = user?.id;
  print(userId);
}

2. 静默登录获取用户信息(备选)

如果无法复用实例,可在确认已登录后调用signInSilently()重新获取用户会话:

await GoogleSignIn().isSignedIn().then((value) async {
  if (value) {
    isLogin = true;
    // 静默登录恢复会话
    GoogleSignInAccount? user = await GoogleSignIn().signInSilently();
    String? userId = user?.id;
    print(userId);
  }
});

注意:此方法会触发网络请求,不如复用实例高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:24:23