Google账号登录异常:模拟器正常真机无法使用,求解决方案
Google账号登录真机失效问题排查与解决
问题描述
使用firebase_ui_oauth_google包实现Google账号登录,模拟器上登录功能可正常运行,但真机上无法完成登录。登录实现代码如下:
Future<UserCredential> signInWithGoogle() async { final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn(); final GoogleSignInAuthentication? googleAuth = await googleUser?.authentication; final credential = GoogleAuthProvider.credential( accessToken: googleAuth?.accessToken, idToken: googleAuth?.idToken, ); return await FirebaseAuth.instance.signInWithCredential(credential); }
排查与解决步骤
配置SHA-1/SHA-256指纹
真机登录必须在Firebase控制台配置对应签名证书的SHA指纹:- 打开Android Studio,通过右侧Gradle面板执行
Tasks > android > signingReport,获取debug和release版本的SHA-1、SHA-256指纹。 - 登录Firebase控制台进入项目设置,在「应用」标签页添加获取到的指纹信息。
- 打开Android Studio,通过右侧Gradle面板执行
更新Google服务配置文件
配置完指纹后,重新下载google-services.json文件,替换项目android/app目录下的旧文件,确保配置包含最新指纹数据。检查Google Play服务版本
确认真机安装了最新版Google Play服务,旧版本可能导致登录验证失败,可通过Google Play商店搜索更新。验证OAuth客户端ID
登录Google Cloud控制台,进入「API和服务 > 凭据」页面,确认已创建Android类型的OAuth客户端ID,且包名、SHA指纹与项目完全匹配。添加必要网络权限
在android/app/src/main/AndroidManifest.xml中添加网络权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />指定GoogleSignIn客户端ID
初始化GoogleSignIn时显式指定客户端ID,避免自动匹配错误:final GoogleSignIn googleSignIn = GoogleSignIn( clientId: "你的Android客户端ID", );捕获异常定位问题
在代码中添加异常捕获,打印具体错误信息辅助排查:Future<UserCredential> signInWithGoogle() async { try { final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn(); final GoogleSignInAuthentication? googleAuth = await googleUser?.authentication; final credential = GoogleAuthProvider.credential( accessToken: googleAuth?.accessToken, idToken: googleAuth?.idToken, ); return await FirebaseAuth.instance.signInWithCredential(credential); } catch (e) { print("Google登录错误: $e"); rethrow; } }
内容的提问来源于stack exchange,提问作者Alexandr
相关产品推荐
相关产品推荐

