当前位置: 首页 > 知识库问答 >
问题:

Flutter:平台异常(sign_in_failed,com.google.android.gms.common.api.异常: 10:, null)

丌官晨
2023-03-14

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

未处理的异常:平台异常(sign_in_failed,com.google.android.gms.common.api.异常:10:,空)

我尝试过:

  • 向 /android/app添加了google-services.json,并向ios/Runner添加了GoogleService-Info.plist
  • 启用gmail进行Firebase身份验证。
  • 将调试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();
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): 

共有2个答案

汪栋
2023-03-14

只需连接SHA,问题就解决了https://developers.google.com/android/guides/client-auth

并替换分析依赖项:

implementation 'com.google.firebase:firebase-core:16.0.6'
闽哲
2023-03-14

我也面临着这个问题。。在我的例子中,我试图在我的一个已经处于生产水平的应用程序中实现GoogleSignIn。。

当我试着这么做的时候。。我也犯了同样的错误<代码>APIException:10。。看来你的案子也一样。。

我尝试了很多次...但是,最后,我妥协了,决定不包括GoogleSignIn在我的应用程序...

但是,再一次...我解决了它...通过向FireBase Project添加2个SHA1键...一个用于调试模式,另一个用于发布模式...

如果我只放debugSHA1键...它在释放模式下不工作,但在debug模式下工作正常,如果我只放释放SHA1键...它在debug中不工作模式,但在释放模式下工作正常。

不知道为什么会这样。。但它正在发生。。不知怎么的,它工作得很好。。

好的...现在...什么是debug释放键...它们不一样吗...我怎么得到它们...?

在这里它是...

进入你的项目在命令提示符...然后cd android然后键入...

gradlew signingReport

它将给出SHA1键。。

有一个密钥由debug keystore生成,另一个由释放keystore生成。

将它们都添加到项目中。。而且它很有效(希望如此)。。就像对我一样。。

希望有帮助。。

注意:我正在使用Windows...不确定是否在Mac上生成密钥的过程是相同的...

 类似资料:
  • 在将其标记为副本之前,请阅读问题。 我在我的谷歌控制台中设置了SHA1和SHA256。 我已经尝试了很多方法,但仍然面临错误。 未处理的异常: 平台异常(sign_in_failed, 还尝试了Flutter和google_sign_in插件:PlatformException(sign_in_failed,com.google.android.gms.common.api.ApiExceptio

  • 凭据对话框(Google表单)已成功打开,但在我填写凭据后,出现了此错误。我按照此处的说明进行了操作。创建了一个Firebase项目,从Google API控制台启用了Google Drive API(这就是我现在需要的)。 引发异常的代码: 这是堆栈跟踪: google_sign_in插件的版本是4.0.0。 这是颤振多克托 -v 的输出: 任何帮助将不胜感激。谢谢!

  • 我已经按照这里的所有步骤进行了操作,我还在Firebase控制台中添加了SHA1键。 这是我的代码 我按照以下步骤创建了一个debug. keystore 异常:平台异常(sign_in_failed,com.google.android.gms.common.api.ApiException:10:,null)E/flutter(30467):#0 StandardMethodCodec。dec

  • 当我创建我的第一个项目在Firebase上使用谷歌登录认证.我的应用程序成功运行和完成谷歌登录。但是当我在Firebase上开发我的第二个项目时,我会做同样的事情,比如添加SHA1和添加支持电子邮件,但是当我试图从我的应用程序中谷歌登录时,它会显示 我不知道为什么会出现这个错误。 有什么条件吗 1)我们不能对不同的应用程序使用相同的SHA1密钥。 2) 我们不能在这两个项目的谷歌标志中使用相同的电

  • 问题内容: 接近认证的最后阶段,但是方法出了点问题。它在日志中返回异常代码10(开发人员错误)。Google提供了全面的描述: 应用程序配置错误。该错误不可恢复,将被视为致命错误。开发者是个白痴… 我该怎么办(获取帐户)并最终从帐户中检索值? 预先感谢您的帮助!!! 主要活动: 问题答案: 如果您不在 console.developers.google 和 console.firebase.goo

  • 快到验证的最后阶段了,但是方法出了问题。它在日志中返回异常代码10(开发人员错误)。谷歌提供了全面的描述: 应用程序配置错误。此错误不可恢复,将被视为致命错误。开发者是个白痴... 我应该做什么来处理这个(获得一个帐户)并最终从帐户检索值? 预先感谢您的帮助!!! 主要活动: