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

Flutter升级google_sign_in至V7版本后,如何获取原accessToken属性对应的值?

Flutter升级google_sign_in至V7版本后,如何获取原accessToken属性对应的值?

嗨,这个问题我之前升级项目的时候刚好踩过坑!google_sign_in升到V7版本之后,确实把GoogleSignInAuthentication里的accessToken属性给移除了,原来直接读属性的写法肯定会报编译错误,不过别担心,换个简单的方式就能拿到你要的token啦~

你可以照着下面的步骤修改代码:

  • 首先,先检查下你的GoogleSignIn初始化代码,确保已经配置了需要的权限范围(scopes),比如要获取用户基本信息的话,至少得加上email、profile和openid,如果要访问特定的Google API(比如Drive、Calendar),还要加上对应的scope。要是你的后端需要验证token,记得把Web端的clientId也配上:
final GoogleSignIn _googleAuth = GoogleSignIn(
  scopes: [
    'email',
    'profile',
    'openid',
    // 这里可以加你需要的其他权限scope,比如访问Google相册的话就加对应的
  ],
  clientId: '你的Google Cloud控制台里的Web Client ID', // 后端验证需要的话必须加
);
  • 登录成功拿到GoogleSignInAccount对象之后,别再用原来的authentication方法了,换成getTokens()方法就行,它会直接返回包含accessToken和idToken的对象,完美替代原来的属性:
// 先完成登录流程
final aSignInAccount = await _googleAuth.signIn();
if (aSignInAccount == null) {
  // 用户取消了登录,这里可以加个提示或者其他处理逻辑
  return;
}

// 调用getTokens()获取你需要的两个token
final tokens = await aSignInAccount.getTokens();
final String? idToken = tokens.idToken;
final String? accessToken = tokens.accessToken; // 这就是你要的accessToken啦!

还有个小提醒:如果用户之前在旧版本登录过,升级后第一次可能需要重新登录一次,这样才能获取到包含新权限的token,避免出现拿不到accessToken的情况。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 11:19:33