googleSignIn.signIn() 函数永远不会完成

问题描述 投票:0回答:1

背景 所以我正在编写一个应用程序,使用谷歌的 gmail api 来读取经过身份验证的用户的电子邮件。

问题 谷歌身份验证流程一切正常,我可以给予同意,除了谷歌登录功能之外的所有功能仍在后台运行,并且在热重新启动应用程序时,我收到如下错误

E/MethodChannel#plugins.flutter.io/google_sign_in_android(28186): java.lang.IllegalStateException: Concurrent operations detected: signIn, signInSilently

只有当我再次重建应用程序时,我才能看到用户已登录。

初步分析 我认为密钥或 SHA 证书的配置有问题,但我已经多次交叉检查了所有内容。 相同的代码可以在完全不同的应用程序中正常工作。

使用的套餐 谷歌登录:^6.1.0 googleapis_auth:^1.1.0 Extension_google_sign_in_as_googleapis_auth:^2.0.9

代码

final GoogleSignIn googleSignIn = GoogleSignIn(
  serverClientId: "YOUR_ID_GOES_HERE",
  scopes: <String>[
    'email',
    'https://www.googleapis.com/auth/gmail.readonly',
  ],
);

Future<void> main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<StatefulWidget> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  GoogleSignInAccount? _currentUser;
  @override
  void initState() {
    super.initState();
    googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount? account) {
      setState(() {
        _currentUser = account;
      });
      if (_currentUser != null) {
        _handleGetEmails();
      }
    });
    silentlySignIn();
  }

  void silentlySignIn() async {
   var resp = await _googleSignIn.signInSilently();
    if (resp != null) {
      print(resp.displayName);
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
          debugShowCheckedModeBanner: false,
          home: Scaffold(
            body: Center(
              child: ElevatedButton(
                onPressed: () async {
                  try {
                    var resp = await googleSignIn.signIn();
                    print(resp); // this part is never executed
                  } catch (error) {
                    print(error);
                  }
                },
                child: const Text("Authorize"),
              ),            
            ),
          ),
        );
  }
}

扑医生-v

[√] Flutter (Channel stable, 3.7.6, on Microsoft Windows [Version 10.0.22621.1778], locale en-IN)
    • Flutter version 3.7.6 on channel stable at D:\Devlopment kits\Flutter_SDK\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 12cb4eb7a0 (3 months ago), 2023-03-01 10:29:26 -0800
    • Engine revision ada363ee93
    • Dart version 2.19.3
    • DevTools version 2.20.1

[√] Windows Version (Installed version of Windows is version 10 or higher)

[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at C:\Users\avish\AppData\Local\Android\sdk
    • Platform android-33, build-tools 31.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)
    • All Android licenses accepted.

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

[!] Visual Studio - develop for Windows (Visual Studio Build Tools 2019 16.11.10)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
    • Visual Studio Build Tools 2019 version 16.11.32126.315
    • Windows 10 SDK version 10.0.19041.0
    X The current Visual Studio installation is incomplete. Please reinstall Visual Studio.

[√] Android Studio (version 2021.2)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)

[√] Connected device (4 available)
    • Redmi Note 9 Pro (mobile) • 333806b5 • android-arm64  • Android 12 (API 31)
    • Windows (desktop)         • windows  • windows-x64    • Microsoft Windows [Version 10.0.22621.1778]
    • Chrome (web)              • chrome   • web-javascript • Google Chrome 114.0.5735.110
    • Edge (web)                • edge     • web-javascript • Microsoft Edge 114.0.1823.37

[√] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

单击“授权”按钮时记录

eloaded 1 of 2687 libraries in 690ms (compile: 80 ms, reload: 243 ms, reassemble: 242 ms).
D/IS_CTS_MODE(13833): false
D/MULTI_WINDOW_SWITCH_ENABLED(13833): false
D/DecorView[](13833): getWindowModeFromSystem  windowmode is 1
D/DecorView[](13833): onWindowFocusChanged hasWindowFocus false
I/FA      (13833): Application backgrounded at: timestamp_millis: 1686639817357
D/DecorView[](13833): onWindowFocusChanged hasWindowFocus true
D/DecorView[](13833): onWindowFocusChanged hasWindowFocus false
D/DecorView[](13833): onWindowFocusChanged hasWindowFocus true

应用程序热重启时记录

Restarted application in 2,610ms.
W/pool-20-thread-(13833): type=1400 audit(0.0:3033198): avc: denied { read } for name="version" dev="proc" ino=4026532097 scontext=u:r:untrusted_app:s0:c56,c259,c512,c768 tcontext=u:object_r:proc_version:s0 tclass=file permissive=0 app=com.finurja.finurja_mobile
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833): Failed to handle method call
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833): java.lang.IllegalStateException: Concurrent operations detected: signIn, signInSilently
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at io.flutter.plugins.googlesignin.GoogleSignInPlugin$Delegate.checkAndSetPendingOperation(GoogleSignInPlugin.java:327)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at io.flutter.plugins.googlesignin.GoogleSignInPlugin$Delegate.checkAndSetPendingOperation(GoogleSignInPlugin.java:322)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at io.flutter.plugins.googlesignin.GoogleSignInPlugin$Delegate.signInSilently(GoogleSignInPlugin.java:413)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at io.flutter.plugins.googlesignin.GoogleSignInPlugin.onMethodCall(GoogleSignInPlugin.java:161)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:258)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at android.os.Handler.handleCallback(Handler.java:938)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at android.os.Handler.dispatchMessage(Handler.java:99)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at android.os.Looper.loopOnce(Looper.java:210)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at android.os.Looper.loop(Looper.java:299)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at android.app.ActivityThread.main(ActivityThread.java:8319)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556)
E/MethodChannel#plugins.flutter.io/google_sign_in_android(13833):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1038)
flutter google-api google-oauth google-signin
1个回答
0
投票

我有完全相同的问题,你找到解决方案了吗? 非常感谢提前

© www.soinside.com 2019 - 2024. All rights reserved.