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

Flutter使用google_sign_in包:Android端idToken返回null问题求助

Android端Google Sign-In idToken返回null的排查与解决

针对你遇到的iOS正常获取idToken、Android端登录成功但idToken为null的问题,以下是几个核心排查和解决方向:

  • 初始化GoogleSignIn时必须指定serverClientId
    默认的GoogleSignIn()初始化未关联用于生成idToken的验证客户端,Android端需要明确传入在Google控制台创建的Web应用客户端ID(注意不是Android客户端ID)。修改代码如下:

    final GoogleSignIn _googleSignIn = GoogleSignIn(
      serverClientId: '你的Web应用客户端ID', // 该ID用于触发idToken的生成
      scopes: [
        'email',
        'profile',
      ],
    );
    
    // 后续登录调用
    GoogleSignInAccount? googleUser = await _googleSignIn.signIn();
    GoogleSignInAuthentication googleAuth = await googleUser.authentication;
    String? googleToken = googleAuth.idToken;
    
  • 检查AndroidManifest.xml的配置
    在Android项目的AndroidManifest.xml的<application>标签内,添加对应Android客户端ID的meta-data配置:

    <meta-data
        android:name="com.google.android.gms.auth.api.signin.client_id"
        android:value="你的Android客户端ID"/>
    

    确保此处的ID与Google控制台中创建的Android客户端ID完全一致。

  • 确认SHA-1证书覆盖测试/发布环境
    若你使用debug包测试,必须将debug keystore的SHA-1指纹也添加到Google控制台的Android客户端配置中(不能仅添加release的SHA-1)。可通过以下命令获取debug SHA-1:

    keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
    

    将生成的SHA-1添加到Google控制台对应Android客户端的证书指纹列表里。

  • 验证包名完全匹配
    Google控制台中Android客户端的包名,必须与Flutter项目android/app/build.gradle里的applicationId完全一致,包括大小写和字符,不能有任何差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:42:42