Firebase flatter和谷歌登录插件:PlatformException(登录失败,com.google.android.gms.common.api.apieexception:10:,null)
凭证的对话框(Google表单)已成功打开,但在填写凭证后,出现此错误。我按照老师的指示去做。创建了一个Firebase项目,从GoogleAPI控制台启用了GoogleDriveAPI(这就是我现在需要的) 引发异常的代码:Firebase flatter和谷歌登录插件:PlatformException(登录失败,com.google.android.gms.common.api.apieexception:10:,null),firebase,flutter,dart,firebase-authentication,google-signin,Firebase,Flutter,Dart,Firebase Authentication,Google Signin,凭证的对话框(Google表单)已成功打开,但在填写凭证后,出现此错误。我按照老师的指示去做。创建了一个Firebase项目,从GoogleAPI控制台启用了GoogleDriveAPI(这就是我现在需要的) 引发异常的代码: final GoogleSignIn _googleSignIn = GoogleSignIn( scopes: [ 'https://www.googleapis.com/auth/drive', ], ); await _googleSignIn.s
final GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'https://www.googleapis.com/auth/drive',
],
);
await _googleSignIn.signIn();
这是堆栈跟踪:
E/flutter ( 5068): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
E/flutter ( 5068): PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
E/flutter ( 5068): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:551:7)
E/flutter ( 5068): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:292:18)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #2 GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:226:58)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #3 GoogleSignIn._addMethodCall (package:google_sign_in/google_sign_in.dart:268:20)
E/flutter ( 5068): #4 GoogleSignIn.signIn (package:google_sign_in/google_sign_in.dart:339:48)
E/flutter ( 5068): #5 ThatsMyComponentState.theSignInFuction.<anonymous closure> (package:my_app/widgets/my_file.dart:666:45)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #6 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
E/flutter ( 5068): #7 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
E/flutter ( 5068): #8 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
E/flutter ( 5068): #9 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
E/flutter ( 5068): #10 TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:204:7)
E/flutter ( 5068): #11 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter ( 5068): #12 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:184:20)
E/flutter ( 5068): #13 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22)
E/flutter ( 5068): #14 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7)
E/flutter ( 5068): #15 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:101:7)
E/flutter ( 5068): #16 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7)
E/flutter ( 5068): #17 _invoke1 (dart:ui/hooks.dart:168:13)
E/flutter ( 5068): #18 _dispatchPointerDataPacket (dart:ui/hooks.dart:122:5)
任何帮助都将不胜感激。谢谢 在android/app/build.gradle中,我将依赖项从com.android.tools.build:gradle:3.1.3/com.google.gms:google services:3.2.1更改为com.android.tools.build:gradle:3.2.1/com.google.gms:google services:4.2.0。它成功了。我刚才遇到了同样的问题。如果您正在运行调试,并且没有在firebase中注册
SHA
指纹,则可能会发生这种情况。
我通过生成一个debug.keystore
并在Firebase上的应用程序中注册来解决这个问题。别忘了在那之后下载新的googleservices.json
。
另见
编辑
如果无法在发布模式下使用身份验证,请尝试以下操作:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
classpath 'com.google.gms:google-services:4.2.0'
}
}
debug.keystore
debug.keystore.lock
-添加释放密钥的SHA证书指纹
keytool-exportcert-list-v\
-别名-密钥库
有关这方面的更多详细信息,请参见此处的“获取发布证书”部分
如果您的身份验证仍然不起作用,可能是因为您从Playstore下载了应用程序,并启用了“应用程序通过Google Play签名功能”
对于这种情况,请转到play store publish console,然后转到release management下的应用程序签名。在那里,您将找到要在Firebase控制台中注册的SHA证书指纹
为了让google\u登录正常工作,您可能需要采取其他步骤:
- 链接GooglePlay与Firebase[()
- 如果您可以在调试期间运行Google登录,但不能在发行版中运行,则很有可能您没有将发行版密钥的SHA1和SHA256添加到firebase。
要获取释放密钥的SHA,请使用
keytool-list-v-keystore~/key.jks-alias key
- 添加GooglePlay Proguard规则
当我遇到这个问题时,我尝试了这篇文章中描述的所有其他解决方案。这些都不起作用。最终我发现:在我的情况下,我必须确保设置“支持电子邮件”
在Firebase中注册应用程序时,我将我的applicationId更改为适合我的应用程序的内容。但是,这导致在我运行调试器时在手机上安装了第二个颤振应用程序(当然,由于applicationId的更改)因此,对我的情况起作用的是
删除安装并重新安装应用程序。对于我来说,我不需要添加额外的SHA,我意识到我没有在Firebase控制台的身份验证选项卡中启用谷歌登录方法
我尝试了以上所有方法,但都没有效果。
我的错误是,我的驱动器中有多个android studio版本文件夹,并且在firebase设置中输入了错误的SHA1键。您可能遇到此错误的一个原因是您没有填写google的OAuth同意书。这是对firebase的新更改
以下是填写应用程序同意书所需遵循的步骤:
导航到google api控制台(当前位于),确保您已登录到创建firebase项目的帐户
从开发人员控制台左上角的“选择项目”下拉列表中选择您的项目
在左侧窗格中,转到“凭据”,然后切换到“OAuth同意屏幕”
在“应用程序名称”下输入应用程序的公共名称
在“应用程序徽标”下,上载应用程序的本地图像文件
在“支持电子邮件”下,输入firebase应用程序中列出的相同支持电子邮件
向下滚动并填写“应用程序主页链接”、“应用程序隐私政策链接”和“应用程序服务条款链接”,方法是在firebase应用程序所在的授权域之前添加http://
单击保存
这些步骤对我很有效!虽然链接可能不存在,但我想引用此解决方案的来源以下解决方案适用于颤振项目:
步骤1:生成SHA1和SHA256键。
步骤2:将SHA1和SH256添加到firebase。(在应用程序设置中)
步骤3:将google services.json下载到项目文件夹中的android/app。
步骤4:在终端中运行命令flatterclean
步骤5:运行你的颤振应用程序。
有关更多信息,请访问:
在Firebase控制台中注册SHA1后,所有人都会错过这一块!确保SHA-1必须是仅在系统中生成的调试密钥,然后下载google-services.json文件并将其附加到项目中确保已添加
dependencies {
classpath 'com.google.gms:google-services:4.2.0'
}
在android/build.gradle和
apply plugin: 'com.google.gms.google-services'
在android/app/build.gradle中,确保android/app/build.gradle中的applicationId与AndroidManifest.xml中的包名相同(更改后可能会忘记更改applicationId)
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
classpath 'com.google.gms:google-services:4.2.0'
}
}
android.useAndroidX=true
android.enableJetifier=true
debug.keystore
debug.keystore.lock
$ keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
$ keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>**INSERT HERE YOUR RESERVED_CLIENT_ID FROM GoogleService-Info.plist**</string>
</array>
</dict>
</array>
gradlew signingReport
./gradlew signingReport