Flutter接入Firebase谷歌登录后无法跳转首页且报ApiException:10错误
com.google.android.gms.common.api.ApiException: 10属于Google登录流程的开发者配置类错误,99%的场景由签名指纹不匹配导致,和你当前的业务代码逻辑关联度极低,按以下步骤排查即可:
- 第一步:获取应用对应环境的签名指纹
测试环境(debug调试版)直接运行对应命令获取debug签名文件的指纹:
Windows系统运行:keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
Mac/Linux系统运行:keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
正式发布环境(release版)将上述命令中的keystore路径、alias、密码替换为你打包用的jks签名文件对应参数,执行后复制输出内容中的SHA1和SHA256值。 - 第二步:更新Firebase项目配置
打开Firebase控制台对应项目,进入「项目设置」-「常规」页面,找到你绑定的Android应用,把上一步拿到的SHA1、SHA256都添加到「SHA证书指纹」列表中,添加完成后重新下载google-services.json文件,替换Flutter项目android/app目录下的旧配置文件。 - 第三步:检查Firebase认证开关
进入Firebase控制台「身份验证」-「登录方式」页面,确认Google登录提供商已经处于启用状态,同时确认你Android应用的包名和Firebase控制台填写的包名完全一致,无大小写、后缀拼写错误。 - 第四步:补全代码异常捕获逻辑
你当前的代码没有做错误捕获,登录失败后会直接抛出未处理异常,不会执行跳转逻辑,建议补充异常捕获分支,参考修改后的代码:children: [ GestureDetector( child: SignInButton( Buttons.Google, onPressed: () async { try { final UserCredential value = await AuthClass().signWithGoogle(); final displayName = value.user?.displayName; print(displayName); if (mounted) { Navigator.pushAndRemoveUntil( context, MaterialPageRoute(builder: (context) => HomePage()), (route) => false ); } } catch (e) { // 可在此处添加用户可见的错误提示,比如弹出Toast print("登录失败:$e"); } }, text: 'Sign In with Google', ),
少见场景排查:如果上述步骤操作完成后仍然报错,可检查运行应用的设备/模拟器的Google Play服务是否已更新到最新版本,同时确认google_sign_in、firebase_core、firebase_auth依赖的版本互相兼容,不存在版本冲突。
内容的提问来源于stack exchange,提问作者ASHIQUE RAJU
相关产品推荐
相关产品推荐

