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

Flutter使用google_sign_in无Firebase时获取idToken返回null如何处理

问题1解答

对接自定义API完全可以不通过Firebase获取idToken,idToken是Google OAuth2.0认证体系原生提供的身份凭证,和Firebase服务没有强制绑定关系,你当前拿不到idToken是初始化配置缺失导致的。

问题2解答

按照以下步骤操作即可正常获取idToken:

  • 先登录Google Cloud控制台,进入你的项目的「API和服务 - 凭据」页面,除了你已经创建的移动端(安卓/iOS)OAuth客户端ID之外,额外创建一个Web应用类型的OAuth客户端ID,这个ID就是后续要用到的serverClientId。
  • 初始化GoogleSignIn实例时,必须传入上述的Web类型客户端ID作为serverClientId参数,示例代码如下:
final GoogleSignIn googleSignIn = GoogleSignIn(
  scopes: [
    'email',
    // 其他你需要申请的用户权限
  ],
  // 这里填入你刚刚创建的Web类型OAuth客户端ID,必填
  serverClientId: 'xxxxxx.apps.googleusercontent.com',
);
  • 额外校验项:
    1. 如果是安卓端,确认你应用打包用的签名SHA1值,已经正确填写到Google Cloud对应安卓OAuth客户端的配置项中。
    2. 修改配置后先调用googleSignIn.signOut()清除本地旧的授权缓存,再重新发起登录流程,否则旧的认证信息不会返回idToken。

原理说明:idToken的核心作用是给你的后端服务校验用户身份合法性,你未传入服务端对应的clientId时,Google默认认为你不需要后端校验场景的idToken,因此不会返回该字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:27:03