我想使用 Google Play 服务登录,但出现此错误...我尝试了所有可能的解决方案,例如添加 SHA-1、生成客户端 ID、发布同意屏幕,但它仍然给出此异常 这是我的代码片段
Future<AuthCredential?> getGoogleCredential() async {
print('Inside getGoogleCredential');
final GoogleSignIn googleSignIn = GoogleSignIn(
signInOption: SignInOption.games,
scopes: [GamesApi.gamesScope],
clientId: 'client id',
hostedDomain: 'my hosted domain',
);
// print('google Sign in is ${googleSignIn.clientId}');
print('google Sign in is ${googleSignIn.currentUser}');
final GoogleSignInAccount? googleUser =
await googleSignIn.signIn().catchError((error) {
print('Failed to sign in with Google Play Games: $error');
});
print('google User is ${googleUser}');
if (googleUser == null) {
print('Failed to sign in with Google Play Games.');
return null;
}
final GoogleSignInAuthentication googleAuth =
await googleUser.authentication;
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
return credential;
}
Future signIn() async {
final AuthCredential? googleCredential = await getGoogleCredential();
if (googleCredential != null) {
await FirebaseAuth.instance.signInWithCredential(googleCredential);
} else {
print('Trying signInAnonymously');
await FirebaseAuth.instance.signInAnonymously();
}
}
如果您忘记将 Google Play SHA1 控制台添加到 Firebase 应用程序设置中,也可能会发生这种情况
怎么做:
转到 Google Play Console -> 您的应用程序 -> 应用程序完整性 -> 应用程序签名 -> 应用程序签名密钥证书 -> 复制 SHA-1 和 SHA-256
转到 Firebase 项目设置并添加上面的 SHA-1 和 SHA-256
理想情况下,您应该在 Firebase 设置中拥有 6 个证书。
3 SHA-1 -->(开发/发布/播放控制台)
3 SHA-256 -->(开发/发布/播放控制台)
基本上错误是ApiException:10。要解决此问题,您需要在谷歌云控制台上使用 SHA1 注册您的应用程序。
前往 https://console.cloud.google.com/
单击凭据 > 创建凭据 >OAuth 客户端 ID
选择您希望应用程序运行的平台。
填写您的应用程序的包名称。
为了填写 SHA1 值,请打开命令行并 cd 到主项目文件夹内的 android 文件夹,然后输入命令 ./gradlewsigningReport,然后按 Enter。完成一些计算后,您将看到扩展 MAC 地址格式的 SHA1 值。
如果您在终端中出现错误,安装您的gradle版本支持的java jdk(截至本回答时,支持java jdk版本14)并将其路径(包括windows环境变量中的bin文件夹)设置为新的道路
我的错误出现是因为我删除了第一个版本
debug
buildType 所以我再次添加它:
android {
// .... other things
buildTypes {
release { // This is require for Firebase
signingConfig signingConfigs.release
}
debug { // This is require for Firebase Emulator
signingConfig signingConfigs.release
}
}
}
我正在本地使用 firebase 模拟器,这是出于调试目的。