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
相关产品推荐
相关产品推荐

