【问题标题】:Unable to do google authentication in app using firebase written in futter [duplicate]无法使用用 futter 编写的 firebase 在应用程序中进行谷歌身份验证 [重复]
【发布时间】:2020-09-01 15:22:33
【问题描述】:

我在 Flutter 中编写了一段代码,并将其与 firebase 成功链接。 但我在使用谷歌登录验证用户时遇到问题。

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';


void main() => runApp(MaterialApp(home: MyApp(),));

class MyApp extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}


final FirebaseAuth firebaseAuth = FirebaseAuth.instance;
final GoogleSignIn googleSignIn = GoogleSignIn();

class _HomePageState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.black54,
          centerTitle: true,
          title: Text('Sign In'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RaisedButton(
              onPressed: _signInWithGoogle,
              color: Colors.black54,
              child: new Text('Sign In With Google',style: TextStyle(color: Colors.white70,fontSize: 24),),
            ),
          ],
        ),
      ),
    );
  }

  _signInWithGoogle() async {
    final GoogleSignInAccount googleUser = await googleSignIn.signIn();
    final GoogleSignInAuthentication googleAuth = await googleUser.authentication;

    final AuthCredential credential = GoogleAuthProvider.getCredential(
        idToken: googleAuth.idToken, accessToken: googleAuth.accessToken);

    final FirebaseUser user = (await firebaseAuth.signInWithCredential(credential)).user;

    if(user != null){
      print('success');
    }
    else{
      print('fail');
    }
  }
}

我得到的错误:-

D/ColorExSystemServiceHelper(24536): checkColorExSystemService className = com.google.android.gms.measurement.service.MeasurementBrokerService
W/mk.r1   (24536): Accessing hidden method Lsun/misc/Unsafe;->getUnsafe()Lsun/misc/Unsafe;(greylist,core-platform-api, linking, allowed)
W/mk.r1   (24536): Accessing hidden method Lsun/misc/Unsafe;->objectFieldOffset(Ljava/lang/reflect/Field;)J (greylist,core-platform-api, linking, allowed)
W/mk.r1   (24536): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
W/mk.r1   (24536): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
I/Choreographer(24536): Skipped 2 frames!  The application may be doing too much work on its main thread.
D/ColorExSystemServiceHelper(24536): checkColorExSystemService className = com.google.android.gms.auth.GetToken  
W/mk.r1   (24536): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
E/flutter (24536): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: [core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()
E/flutter (24536): #0      MethodChannelFirebase.app (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:118:5)
E/flutter (24536): #1      Firebase.app (package:firebase_core/src/firebase.dart:52:41)
E/flutter (24536): #2      FirebaseAuth.instance (package:firebase_auth/src/firebase_auth.dart:37:47)
E/flutter (24536): #3      firebaseAuth (package:r1/main.dart:14:48)
E/flutter (24536): #4      firebaseAuth (package:r1/main.dart)   
E/flutter (24536): #5      _HomePageState._signInWithGoogle (package:r1/main.dart:57:38)
E/flutter (24536): <asynchronous suspension>
E/flutter (24536): #6      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:992:19)
E/flutter (24536): #7      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1098:38)
E/flutter (24536): #8      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:184:24)
E/flutter (24536): #9      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:524:11)
E/flutter (24536): #10     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:284:5)
E/flutter (24536): #11     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:219:7)
E/flutter (24536): #12     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:477:9)
E/flutter (24536): #13     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:78:12)   
E/flutter (24536): #14     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:124:9)
E/flutter (24536): #15     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8)
E/flutter (24536): #16     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:122:18)
E/flutter (24536): #17     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:108:7)
E/flutter (24536): #18     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:220:19)
E/flutter (24536): #19     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:200:22)
E/flutter (24536): #20     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:158:7)
E/flutter (24536): #21     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:104:7)
E/flutter (24536): #22     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:88:7)
E/flutter (24536): #23     _rootRunUnary (dart:async/zone.dart:1206:13)
E/flutter (24536): #24     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (24536): #25     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (24536): #26     _invoke1 (dart:ui/hooks.dart:267:10)
E/flutter (24536): #27     _dispatchPointerDataPacket (dart:ui/hooks.dart:176:5)
E/flutter (24536): 

颤振医生:-

[√] Flutter (Channel stable, 1.20.2, on Microsoft Windows [Version 10.0.18363.1016], locale en-IN)
• Flutter version 1.20.2 at C:\Users\Asus\flutter
• Framework revision bbfbf1770c (3 weeks ago), 2020-08-13 08:33:09 -0700
• Engine revision 9d5b21729f
• Dart version 2.9.1

[√] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
• Android SDK at C:\Users\Asus\AppData\Local\Android\sdk
• Platform android-29, build-tools 29.0.3
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
• All Android licenses accepted.

[√] Android Studio (version 4.0)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 48.1.2
• Dart plugin version 193.7547
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] VS Code (version 1.48.2)
• VS Code at C:\Users\Asus\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.13.2

[√] Connected device (1 available)
• RMX1901 (mobile) • 9bbf0fbd • android-arm64 • Android 10 (API 29)

• No issues found!
Process finished with exit code 0

请提出解决此问题的建议。 这是我关于 stakoverflow 的第一个问题帖子,因此如果有任何错误,我们很乐意接受并记住它以备将来使用。

【问题讨论】:

标签: android firebase flutter firebase-authentication


【解决方案1】:

看来您现在需要在调用 Firebase 之前对其进行初始化,因此您可以在主函数中尝试此操作:

import 'package:firebase_core/firebase_core.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MaterialApp(home: MyApp()));
}

(已编辑 b/c 我错过了导入)

【讨论】:

  • 谢谢克里斯,这对我有用,但现在它显示新错误 [错误:flutter/lib/ui/ui_dart_state.cc(166)] 未处理的异常:类型“用户”不是输入“FirebaseUser”
【解决方案2】:

对于你的第二个问题,尝试更换

FirebaseUser 用户和用户用户。

【讨论】:

  • 感谢您的回答,此解决方案对我有用。更好的选择是使用'UserCredential userCredential = await FirebaseAuth.instance.signInWithCredential(credential);'
猜你喜欢
  • 2021-01-09
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 2013-02-11
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
相关资源
最近更新 更多