0

I have written a code in flutter and linked it with firebase successfully. But i am facing problem in authenticating user using google sign in.

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');
    }
  }
}

Error which I am getting:-

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 doctor:-

[√] 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

Please give suggestion to solve this problem. This is my first question post on stakoverflow so if any mistakes are there happy to accept it and remember it for future.

Doug Stevenson
  • 297,357
  • 32
  • 422
  • 441
Mohanish
  • 1
  • 2
  • check this : https://stackoverflow.com/questions/63492211/no-firebase-app-default-has-been-created-call-firebase-initializeapp-in – Merym Sep 01 '20 at 15:45

2 Answers2

0

It looks like you need to initialize Firebase now before invoking it, so you can try this in your main function:

import 'package:firebase_core/firebase_core.dart';

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

(edited b/c I missed the import)

Kris
  • 3,091
  • 20
  • 28
  • thank you kris this worked for me but now it is showing new error [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: type 'User' is not a subtype of type 'FirebaseUser' – Mohanish Sep 01 '20 at 19:14
0

For your second problem, try replacing

FirebaseUser user with User user.

Alperen Ekin
  • 258
  • 2
  • 10
  • thanks for answering, this solution worked for me. and a better alternative is to use 'UserCredential userCredential = await FirebaseAuth.instance.signInWithCredential(credential);' – Mohanish Sep 02 '20 at 14:10