Firebase 颤振:平台异常(登录失败,com.google.android.gms.common.api.ApiException:10:,null)

Firebase 颤振:平台异常(登录失败,com.google.android.gms.common.api.ApiException:10:,null),firebase,flutter,dart,oauth,google-signin,Firebase,Flutter,Dart,Oauth,Google Signin,我有一个Flutter应用程序,我试图允许用户登录他们的Gmail,因为我希望能够列出他们的电子邮件。当我按下我的LoginButton时,我会收到Gmail登录的提示,我会输入我的凭证,但随后它会返回到带有LoginButton的屏幕,我会遇到以下错误: 未处理的异常:平台异常(登录失败,com.google.android.gms.common.api.ApiException:10:,null) 我所尝试的: 将google services.json添加到/android/app,并将

我有一个Flutter应用程序,我试图允许用户登录他们的Gmail,因为我希望能够列出他们的电子邮件。当我按下我的
LoginButton
时,我会收到Gmail登录的提示,我会输入我的凭证,但随后它会返回到带有
LoginButton
的屏幕,我会遇到以下错误:

未处理的异常:平台异常(登录失败,com.google.android.gms.common.api.ApiException:10:,null)

我所尝试的:

  • google services.json
    添加到/android/app,并将
    GoogleService Info.plist
    添加到ios/Runner
  • 为Firebase身份验证启用gmail
  • 将调试SHA1和SHA256添加到firebase身份验证中
  • 填写OAuth同意书(我在做了其他事情之后才这么做。我不知道这是否会影响它。)
有什么想法吗?谢谢

这是我的密码:

class AuthService {
  final GoogleSignIn _googleSignIn = GoogleSignIn();
  final FirebaseAuth _auth = FirebaseAuth.instance;
  final Firestore _db = Firestore.instance;

  Observable<FirebaseUser> user;
  Observable<Map<String, dynamic>> profile;
  PublishSubject loading = PublishSubject();

  AuthService() {
    user = Observable(_auth.onAuthStateChanged);

    profile = user.switchMap((FirebaseUser u) {
      if (u != null) {
        return _db
            .collection('users')
            .document(u.uid)
            .snapshots()
            .map((snap) => snap.data);
      } else {
        return Observable.just({});
      }
    });
  }

  Future<FirebaseUser> googleSignIn() async {
    loading.add(true);
    GoogleSignInAccount googleUser = await _googleSignIn.signIn();
    GoogleSignInAuthentication googleAuth = await googleUser.authentication;
    final AuthCredential credential = GoogleAuthProvider.getCredential(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
    );
    FirebaseUser user = (await _auth.signInWithCredential(credential)).user;

    updateUserData(user);
    print("signed in " + user.displayName);

    loading.add(false);
    return user;
  }

  void updateUserData(FirebaseUser user) async {
    DocumentReference ref = _db.collection('user').document('user.uid');

    return ref.setData({
      'uid': user.uid,
      'email': user.email,
      'photoURL': user.photoUrl,
      'displayName': user.displayName,
      'lastSeen': DateTime.now()
    }, merge: true);
  }

  void signOut() {
    _auth.signOut();
  }
}

final AuthService authService = AuthService();
类身份验证服务{
最终GoogleSignIn _GoogleSignIn=GoogleSignIn();
final FirebaseAuth _auth=FirebaseAuth.instance;
final Firestore _db=Firestore.instance;
可观察用户;
可见轮廓;
PublishSubject加载=PublishSubject();
AuthService(){
用户=可观察(_auth.onAuthStateChanged);
profile=user.switchMap((FirebaseUser u){
如果(u!=null){
返回_db
.collection('用户')
.文件(u.uid)
.快照()
.map((快照)=>快照数据);
}否则{
返回可观察的。just({});
}
});
}
Future googleSignIn()异步{
加载。添加(true);
GoogleSignInAccount googleUser=wait_googleSignIn.signIn();
GoogleSignInAuthentication googleAuth=等待googleUser.authentication;
final AuthCredential credential=GoogleAuthProvider.getCredential(
accessToken:googleAuth.accessToken,
idToken:googleAuth.idToken,
);
FirebaseUser用户=(等待身份验证登录,使用凭证(凭证)).user;
updateUserData(用户);
打印(“登录”+user.displayName);
加载。添加(假);
返回用户;
}
void updateUserData(FirebaseUser用户)异步{
DocumentReference=_db.collection('user').document('user.uid');
返回ref.setData({
“uid”:user.uid,
“电子邮件”:user.email,
“photoURL”:user.photoURL,
“displayName”:user.displayName,
“lastSeen”:DateTime.now()
},merge:true);
}
无效签出(){
_auth.signOut();
}
}
final AuthService AuthService=AuthService();
在调试模式下为x86构建的Android SDK上启动lib\main.dart。。。
正在初始化gradle。。。
正在解析依赖项。。。
正在运行Gradle任务“assembleDebug”。。。
registerResGeneratingTask已弃用,请使用registerGeneratedResFolders(FileCollection)
registerResGeneratingTask已弃用,请使用registerGeneratedResFolders(FileCollection)
registerResGeneratingTask已弃用,请使用registerGeneratedResFolders(FileCollection)
已生成build\app\outputs\apk\debug\app-debug.apk。
正在安装build\app\outputs\apk\app.apk。。。
I/FA(4974):找不到标签管理器,因此不会使用
W/d.memail.memai(4974):访问隐藏方法Landroid/view/accessibility/AccessibilityNodeInfo;->getSourceNodeId()J(浅灰色列表,反射)
W/d.memail.memai(4974):访问隐藏方法Landroid/view/accessibility/AccessibilityRecord;->getSourceNodeId()J(浅灰色列表,反射)
W/d.memail.memai(4974):访问隐藏字段Landroid/view/accessibility/AccessibilityNodeInfo;->mchildnodeid:Landroid/util/LongArray;(浅灰色列表,反射)
W/d.memail.memai(4974):访问隐藏方法Landroid/util/LongArray;->获取(I)J(浅灰色列表,反射)
正在将文件同步到为x86构建的Android SDK设备。。。
I/OpenGLRenderer(4974):初始化EGL,版本1.4
D/OpenGLRenderer(4974):交换行为1
D/(4974):主机连接::get()已建立新主机连接0xd831cb40,tid 5016
D/EGL_仿真(4974):eglCreateContext:0xec485d80:maj 2 min 0 rcv 2
D/EGL_仿真(4974):eglMakeCurrent:0xec485d80:ver 2 0(tinfo 0xec483d80)
D/(4974):主机连接::get()新主机连接已建立0xd3f22780,tid 5005
D/EGL_仿真(4974):eglCreateContext:0xec485a80:maj 2 min 0 rcv 2
D/EGL_仿真(4974):eglMakeCurrent:0xec485a80:ver 2 0(tinfo 0xec483c50)
D/EGL_仿真(4974):eglMakeCurrent:0xec485d80:ver 2 0(tinfo 0xec483d80)
I/d.memail.memai(4974):后台并发复制GC释放35614(5MB)个AllocSpace对象,27(1068KB)个LOS对象,50%空闲,1856KB/3MB,暂停498us总计214.123ms
I/OpenGLRenderer(4974):戴维!持续时间=719ms;Flags=1,IntendedVsync=65710145267,Vsync=66060145253,OldestInputEvent=9223372036854775807,NewestInputEvent=0,HandleInputStart=66062704600,AnimationStart=66062759800,PerformTraversalsStart=66062789600,DrawStart=66070699600,SyncQueued=66071765200,SyncStart=66073102800,IssueDrawCommandsStart=66074268300,SwapBuffers=66323835100,FrameCompleted=66431085200,DequeueBufferDuration=26966000,QueueBufferDuration=372000,
E/EnhancedIntentService(4974):绑定到服务失败
D/EGL_仿真(4974):eglMakeCurrent:0xec485a80:ver 2 0(tinfo 0xec483c50)
W/ActivityThread(4974):handleWindowVisibility:令牌android.os没有活动。BinderProxy@b021561
D/EGL_仿真(4974):eglMakeCurrent:0xec485d80:ver 2 0(tinfo 0xec483d80)
D/EGL_仿真(4974):eglMakeCurrent:0xec485d80:ver 2 0(tinfo 0xec483d80)
D/EGL_仿真(4974):eglCreateContext:0xec485b40:maj 2 min 0 rcv 2
D/EGL_仿真(4974):eglMakeCurrent:0xec485b40:ver 2 0(tinfo 0xec483c50)
D/EGL_仿真(4974):eglMakeCurrent:0xec485b40:ver 2 0(tinfo 0xec483c50)
D/EGL_仿真(4974):eglMakeCurrent:0xec485d80:ver 2 0(tinfo 0xec483d80)
D/EGL_仿真(4974):eglMakeCurrent:0xec485d80:ver 2 0(tinfo 0xec483d80)
D/EGL_仿真(4974):eglMakeCurrent:0xec48
Launching lib\main.dart on Android SDK built for x86 in debug mode...
Initializing gradle...
Resolving dependencies...
Running Gradle task 'assembleDebug'...
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
Built build\app\outputs\apk\debug\app-debug.apk.
Installing build\app\outputs\apk\app.apk...
I/FA      ( 4974): Tag Manager is not found and thus will not be used
W/d.memail.memai( 4974): Accessing hidden method Landroid/view/accessibility/AccessibilityNodeInfo;->getSourceNodeId()J (light greylist, reflection)
W/d.memail.memai( 4974): Accessing hidden method Landroid/view/accessibility/AccessibilityRecord;->getSourceNodeId()J (light greylist, reflection)
W/d.memail.memai( 4974): Accessing hidden field Landroid/view/accessibility/AccessibilityNodeInfo;->mChildNodeIds:Landroid/util/LongArray; (light greylist, reflection)
W/d.memail.memai( 4974): Accessing hidden method Landroid/util/LongArray;->get(I)J (light greylist, reflection)
Syncing files to device Android SDK built for x86...
I/OpenGLRenderer( 4974): Initialized EGL, version 1.4
D/OpenGLRenderer( 4974): Swap behavior 1
D/        ( 4974): HostConnection::get() New Host Connection established 0xd831cb40, tid 5016
D/EGL_emulation( 4974): eglCreateContext: 0xec485d80: maj 2 min 0 rcv 2
D/EGL_emulation( 4974): eglMakeCurrent: 0xec485d80: ver 2 0 (tinfo 0xec483d80)
D/        ( 4974): HostConnection::get() New Host Connection established 0xd3f22780, tid 5005
D/EGL_emulation( 4974): eglCreateContext: 0xec485a80: maj 2 min 0 rcv 2
D/EGL_emulation( 4974): eglMakeCurrent: 0xec485a80: ver 2 0 (tinfo 0xec483c50)
D/EGL_emulation( 4974): eglMakeCurrent: 0xec485d80: ver 2 0 (tinfo 0xec483d80)
I/d.memail.memai( 4974): Background concurrent copying GC freed 35614(5MB) AllocSpace objects, 27(1068KB) LOS objects, 50% free, 1856KB/3MB, paused 498us total 214.123ms
I/OpenGLRenderer( 4974): Davey! duration=719ms; Flags=1, IntendedVsync=65710145267, Vsync=66060145253, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=66062704600, AnimationStart=66062759800, PerformTraversalsStart=66062789600, DrawStart=66070699600, SyncQueued=66071765200, SyncStart=66073102800, IssueDrawCommandsStart=66074268300, SwapBuffers=66323835100, FrameCompleted=66431085200, DequeueBufferDuration=26966000, QueueBufferDuration=372000, 
E/EnhancedIntentService( 4974): binding to the service failed
D/EGL_emulation( 4974): eglMakeCurrent: 0xec485a80: ver 2 0 (tinfo 0xec483c50)
W/ActivityThread( 4974): handleWindowVisibility: no activity for token android.os.BinderProxy@b021561
D/EGL_emulation( 4974): eglMakeCurrent: 0xec485d80: ver 2 0 (tinfo 0xec483d80)
D/EGL_emulation( 4974): eglMakeCurrent: 0xec485d80: ver 2 0 (tinfo 0xec483d80)
D/EGL_emulation( 4974): eglCreateContext: 0xec485b40: maj 2 min 0 rcv 2
D/EGL_emulation( 4974): eglMakeCurrent: 0xec485b40: ver 2 0 (tinfo 0xec483c50)
D/EGL_emulation( 4974): eglMakeCurrent: 0xec485b40: ver 2 0 (tinfo 0xec483c50)
D/EGL_emulation( 4974): eglMakeCurrent: 0xec485d80: ver 2 0 (tinfo 0xec483d80)
D/EGL_emulation( 4974): eglMakeCurrent: 0xec485d80: ver 2 0 (tinfo 0xec483d80)
D/EGL_emulation( 4974): eglMakeCurrent: 0xec485d80: ver 2 0 (tinfo 0xec483d80)
E/flutter ( 4974): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
E/flutter ( 4974): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:564:7)
E/flutter ( 4974): #1      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:316:33)
E/flutter ( 4974): <asynchronous suspension>
E/flutter ( 4974): #2      MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:344:48)
E/flutter ( 4974): <asynchronous suspension>
E/flutter ( 4974): #3      GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:218:23)
E/flutter ( 4974): <asynchronous suspension>
E/flutter ( 4974): #4      GoogleSignIn._addMethodCall (package:google_sign_in/google_sign_in.dart:257:20)
E/flutter ( 4974): #5      GoogleSignIn.signIn (package:google_sign_in/google_sign_in.dart:324:48)
E/flutter ( 4974): #6      AuthService.googleSignIn (package:memail/auth.dart:33:58)
E/flutter ( 4974): <asynchronous suspension>
E/flutter ( 4974): #7      LoginButton.build.<anonymous closure>.<anonymous closure> (package:memail/main.dart:86:46)
E/flutter ( 4974): #8      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:635:14)
E/flutter ( 4974): #9      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:711:32)
E/flutter ( 4974): #10     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter ( 4974): #11     TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:365:11)
E/flutter ( 4974): #12     TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:275:7)
E/flutter ( 4974): #13     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:455:9)
E/flutter ( 4974): #14     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:75:13)
E/flutter ( 4974): #15     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:102:11)
E/flutter ( 4974): #16     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
E/flutter ( 4974): #17     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter ( 4974): #18     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter ( 4974): #19     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter ( 4974): #20     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter ( 4974): #21     _rootRunUnary (dart:async/zone.dart:1136:13)
E/flutter ( 4974): #22     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
E/flutter ( 4974): #23     _CustomZone.runUnaryGuarded (dart:async/zone.dart:931:7)
E/flutter ( 4974): #24     _invoke1 (dart:ui/hooks.dart:250:10)
E/flutter ( 4974): #25     _dispatchPointerDataPacket (dart:ui/hooks.dart:159:5)
E/flutter ( 4974): 

implementation 'com.google.firebase:firebase-core:16.0.6'
gradlew signingReport