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

Flutter集成Firebase谷歌登录出现异步挂起12500错误求助

Flutter Firebase 谷歌登录报错12500 排查方案

问题现象

基于Firebase为Flutter应用实现谷歌登录功能时,每次执行登录逻辑抛出如下错误:

W/GoogleApiManager( 4417): The service for com.google.android.gms.auth.api.signin.internal.zbe is not available: ConnectionResult{statusCode=SERVICE_INVALID, resolution=null, message=null}
E/flutter ( 4417): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 12500: , null, null)
E/flutter ( 4417): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:607:7)
E/flutter ( 4417): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:167:18)
E/flutter ( 4417): <asynchronous suspension>
E/flutter ( 4417): #2      MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:367:43)
E/flutter ( 4417): <asynchronous suspension>
E/flutter ( 4417): #3      GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:247:30)
E/flutter ( 4417): <asynchronous suspension>
E/flutter ( 4417): #4      GoogleSignIn.signIn.isCanceled (package:google_sign_in/google_sign_in.dart:377:5)
E/flutter ( 4417): <asynchronous suspension>

已确认debug环境SHA-1密钥配置正确,暂未定位到其他故障原因。
现有登录实现代码(auth.dart)如下:

import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';

class AuthService {
  final userStream = FirebaseAuth.instance.authStateChanges();
  final user = FirebaseAuth.instance.currentUser;

  Future<void> anonLogin() async {
    try {
      await FirebaseAuth.instance.signInAnonymously();
    } on FirebaseAuthException {
      // handle error
    }
  }

  Future<void> signOut() async {
    await FirebaseAuth.instance.signOut();
  }

  Future<void> googleLogin() async {
    try {
      final googleUser = await GoogleSignIn().signIn();

      if (googleUser == null) return;

      final googleAuth = await googleUser.authentication;
      final authCredential = GoogleAuthProvider.credential(
        accessToken: googleAuth.accessToken,
        idToken: googleAuth.idToken,
      );

      await FirebaseAuth.instance.signInWithCredential(authCredential);
    } on FirebaseAuthException catch (e) {
      // handle error
    }
  }
}

排查解决步骤

按优先级从高到低逐项排查:

  • 检查Firebase控制台谷歌登录配置:进入Firebase控制台「Authentication」-「登录方法」,启用谷歌登录后,必须选择一个有效的项目支持邮箱,该配置留空是触发12500错误的最常见原因
  • 补全证书指纹配置:除debug签名的SHA-1外,需要将所有用到的签名密钥(debug、release、渠道定制签名)的SHA-1、SHA-256全部添加到Firebase项目设置-安卓应用的「SHA证书指纹」栏,添加完成后重新下载google-services.json,替换项目中android/app目录下的旧配置文件
  • 校验Android端工程配置:
    1. 确认android/build.gradle中com.google.gms:google-services依赖版本不低于4.3.10,和项目使用的Firebase SDK版本兼容
    2. 确认android/app/build.gradle文件末尾已添加谷歌服务插件引用:apply plugin: 'com.google.gms.google-services'
    3. 核对工程中配置的applicationId和Firebase控制台登记的安卓应用包名完全一致,多渠道打包场景下要确认所有渠道包名均已在Firebase登记
  • 排查测试设备环境:
    1. 测试设备必须安装官方正版Google Play服务且更新到最新版本,第三方魔改ROM、未合规预装GMS服务的设备会直接报SERVICE_INVALID错误
    2. 卸载设备上已安装的旧版测试包,清除Google Play服务缓存后重新编译安装应用测试
  • 优化代码逻辑:现有代码仅捕获FirebaseAuthException,谷歌登录阶段抛出的PlatformException未被捕获会直接导致未处理异常;初始化GoogleSignIn时可显式传入web端clientId(从google-services.json中找client_type=3对应的oauth_client_id),避免自动匹配client id失败。修正后的登录方法参考:
Future<void> googleLogin() async {
  try {
    final GoogleSignIn googleSignIn = GoogleSignIn(
      scopes: ['email', 'profile'],
      // 替换为你自己项目的web client id
      // clientId: "你的项目id.apps.googleusercontent.com"
    );
    final googleUser = await googleSignIn.signIn();
    if (googleUser == null) return;
    final googleAuth = await googleUser.authentication;
    final authCredential = GoogleAuthProvider.credential(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
    );
    await FirebaseAuth.instance.signInWithCredential(authCredential);
  } catch (e) {
    // 全量捕获异常打印日志,方便定位细节问题
    print("谷歌登录异常: $e");
    rethrow;
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:48:21