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

升级google_sign_in至6.0.0后Google登录功能异常求助

解决google_sign_in ^6.0.0登录后调用People API失败的问题

问题根源

  1. 重复登录触发冲突:signIn方法里同时调用signInSilently()和await _googleSignIn.signIn(),两次登录流程会导致状态混乱。
  2. authHeaders在web端的兼容性变化:6.x版本中web端的user.authHeaders获取逻辑有变更,直接使用会触发请求错误。

解决方案

1. 修复重复登录逻辑

把signInSilently()移到页面初始化阶段执行,避免和主动登录流程冲突:

@override
void initState() {
  super.initState();
  // 页面初始化时尝试静默登录
  signInSilently();
}

void signInSilently() {
  _googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount? account) {
    print('signInsilently log!!');
    print(account);
    if (account != null) {
      _handleGetContact(account);
    }
  });

  _googleSignIn.signInSilently();
}

Future<void> signIn() async {
  try {
    var googleSignInAccount = await _googleSignIn.signIn();
    print(googleSignInAccount);
    if (googleSignInAccount != null) {
      await _handleGetContact(googleSignInAccount);
    }
  } catch (e) {
    print('登录出错: $e');
  }
}

2. 调整People API请求的header构建方式

不再依赖user.authHeaders,改为通过user.authentication获取accessToken后手动构建请求头:

Future<void> _handleGetContact(GoogleSignInAccount user) async {
  try {
    final GoogleSignInAuthentication auth = await user.authentication;
    final String accessToken = auth.accessToken!;

    final http.Response response = await http.get(
      Uri.parse('https://people.googleapis.com/v1/people/me/connections'
          '?requestMask.includeField=person.names'),
      headers: {
        'Authorization': 'Bearer $accessToken',
      },
    );
    if (response.statusCode != 200) {
      print('People API ${response.statusCode} response: ${response.body}');
      return;
    }
    final Map<String, dynamic> data = json.decode(response.body) as Map<String, dynamic>;
    // 此处处理返回的联系人数据
  } catch (e) {
    print('获取联系人出错: $e');
  }
}

3. 额外检查

确保web项目的index.html中已正确引入Google GSI脚本:

<script src="https://accounts.google.com/gsi/client" async defer></script>

内容的提问来源于stack exchange,提问作者K m.k

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:27:22