登录Google账号后出错[flutter][google_sign_in]

Error after logging in Google Account[flutter][ google_sign_in]

我注意到这样一个问题,有时无法登录 Google 帐户。在发布或调试版本中,身份验证有效,但经常弹出此错误。之前同样的配置不存在这个问题

I/flutter (16382): [firebase_auth/invalid-credential] The supplied auth credential is malformed or has expired. [ Invalid Idp Response: access_token
audience is not for this project ]
E/flutter (16382): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: NoSuchMethodError: The getter 'user' was called on null.
E/flutter (16382): Receiver: null
E/flutter (16382): Tried calling: user
E/flutter (16382): #0      signInWithGoogle (package:dp/workers/auth.dart:37)
E/flutter (16382): <asynchronous suspension>
E/flutter (16382): #1      _MyHomePageState.build.onDocking (package:dp/main.dart:247)
E/flutter (16382): <asynchronous suspension>
E/flutter (16382):

代码:

final FirebaseAuth _auth = FirebaseAuth.instance;

Future<String> signInWithGoogle() async {
  // Trigger the authentication flow
  final GoogleSignInAccount googleSignInUser = await GoogleSignIn().signIn();

  // Obtain the auth details from the request
  final GoogleSignInAuthentication googleAuth =
      await googleSignInUser.authentication;

  // Create a new credential
  final AuthCredential credential = GoogleAuthProvider.credential(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );

  UserCredential authResult;
  try {
    // Attempt to sign in the user in with Google
    authResult = await _auth.signInWithCredential(credential);
  } on FirebaseAuthException catch (e) {
    print(e);
  }

  final User user = authResult.user;

  assert(user.email != null);
  assert(user.displayName != null);
  assert(user.photoURL != null);

  assert(!user.isAnonymous);
  assert(await user.getIdToken() != null);

  final User currentUser = _auth.currentUser;
  assert(user.uid == currentUser.uid);

  final DatabaseServiceUser db = DatabaseServiceUser();
  await db.createUser(currentUser);

  return 'signInWithGoogle succeeded: $user';
}

pubspec.yaml:

  google_sign_in: ^5.0.1
  firebase_auth: ^1.4.1

flutter doctor -v:

[√] Flutter (Channel stable, 2.2.2, on Microsoft Windows [Version 10.0.17763.1935], locale ru-RU)
    • Flutter version 2.2.2 at D:\FLUTTER
    • Framework revision d79295af24 (3 weeks ago), 2021-06-11 08:56:01 -0700
    • Engine revision 91c9fc8fe0
    • Dart version 2.13.3

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at D:\SDK
    • Platform android-30, build-tools 30.0.3
    • Java binary at: C:\Program Files\Java\jre1.8.0_291\bin\java
    • Java version Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions).

[√] Connected device (1 available)
    • Chrome (web) • chrome • web-javascript • Google Chrome 91.0.4472.114

! Doctor found issues in 1 category.

OAuth 同意屏幕和凭据 p: OAuth consent screen pic Credentials pic

错误原来是在Google这边。在 firebase 中创建一个新项目后,一切都使用与过去相同的配置成功运行。