我正在 Flutter 应用程序中实现 Google 登录,但遇到了需要帮助的问题。
问题描述:
在 MacOS 上:
当我的同事在他们的 MacOS 计算机上构建并运行该应用程序时,Google 登录可以完美运行。 在连接到 Mac 的物理设备上运行该应用程序也可以正常运行,不会出现任何问题。 在 Windows 11 上:
当我在 Windows 11 计算机上构建并运行相同的应用程序时,Google 登录失败并出现以下错误:
PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)
我尝试过的:
添加了 SHA-1 证书指纹:
使用 keytool 从我的 Windows 计算机的调试密钥库中获取 SHA-1 指纹:
keytool -list -v -alias androiddebugkey -keystore "%USERPROFILE%\.android\debug.keystore" -storepass android -keypass android
将此 SHA-1 指纹添加到 Firebase 控制台。
也尝试使用 Google Play Console 中的所有 SHA-1 密钥。
已验证的 OAuth 客户端 ID:
确认 Google Cloud Console 中的 OAuth 客户端 ID 与项目匹配。 已检查包裹名称:
确保应用程序的包名称与 Firebase 中注册的包名称完全匹配。 已授予互联网权限:
在 AndroidManifest.xml 中添加互联网权限:
<uses-permission android:name="android.permission.INTERNET" />
依赖项和 Gradle 配置:
pubspec.yaml 依赖项:
dependencies:
flutter:
sdk: flutter
google_sign_in: ^6.2.1
firebase_auth: ^5.2.0
firebase_core: ^3.4.0
android/build.gradle 设置:
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:7.4.2'
classpath 'com.google.gms:google-services:4.4.2' // Added Google services classpath
}
}
在 android/app/build.gradle 中应用 Google 服务插件:
应用插件:'com.google.gms.google-services'
更新了 SDK 和插件:
清理 flutter 并重建项目。 将所有依赖项更新到最新版本。 环境详情:
颤动版本:
Flutter 3.24.0-1.0.pre.490 • channel master • https://github.com/flutter/flutter.git
Framework • revision d595e98d85 (8 weeks ago) • 2024-08-07 18:45:53 +0200
Engine • revision 5a0fd5fbec
Tools • Dart 3.6.0 (build 3.6.0-122.0.dev) • DevTools 2.38.0
Java版本:
java version "17.0.12" 2024-07-16 LTS
Java(TM) SE Runtime Environment (build 17.0.12+8-LTS-286)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)
Gradle 版本:
Build time: 2024-08-14 11:07:45 UTC
Revision: fef2edbed8af1022cefaf44d4c0514c5f89d7b78
Kotlin: 1.9.24
Groovy: 3.0.22
Ant: Apache Ant(TM) version 1.10.14 compiled on August 16 2023
Launcher JVM: 17.0.12 (Oracle Corporation 17.0.12+8-LTS-286)
Daemon JVM: C:\Program Files\Java\jdk-17 (no JDK specified, using current Java home)
OS: Windows 11 10.0 amd64
附加信息:
开发环境的差异:
MacOS 开发人员的计算机: 当应用程序在 MacOS 上构建并运行时,Google 登录即可工作。 在物理设备上测试;一切正常。 我的 Windows 11 电脑: 使用相同的源代码,Google 登录失败并显示 ApiException: 10。 该问题同时出现在模拟器和物理设备上。 其他尝试:
确保测试设备上的 Google Play 服务是最新的。 清除缓存并使用 flutter clean 重建项目。 已验证所有插件和依赖项都是最新的。 问题:
仅在 Windows 上构建时可能导致 ApiException: 10 错误的原因是什么? 是否有任何特定于 Windows 的其他配置或设置需要检查? 此问题是否与 MacOS 和 Windows 之间的调试密钥库差异有关?如果是这样,我该如何解决? 任何帮助将不胜感激!
添加了 SHA-1 证书指纹:
使用 keytool 从我的 Windows 计算机的调试密钥库中获取 SHA-1 指纹:
bash keytool -list -v -alias androiddebugkey -keystore "%USERPROFILE%.android\debug.keystore" -storepass android -keypass android 已将此 SHA-1 指纹添加到 Firebase 控制台。
也尝试使用 Google Play Console 中的所有 SHA-1 密钥。
已验证的 OAuth 客户端 ID:
确认 Google Cloud Console 中的 OAuth 客户端 ID 与项目匹配。 已检查包裹名称:
确保应用程序的包名称与 Firebase 中注册的包名称完全匹配。 已授予互联网权限:
在 AndroidManifest.xml 中添加互联网权限: