Tanımsız 'FirebaseUser' sınıfı

Aug 19 2020

Flutter'da yeniyim. Birlikte Sorun var Firebase Auth / Google Kimlik Doğrulama FirebaseUser Kodu tanımlanmadı:

FirebaseAuth _auth = FirebaseAuth.instance;
GoogleSignIn googleSignIn = GoogleSignIn();

Future<FirebaseUser> currentUser() async { // The Issue is here in the Future<>
  final GoogleSignInAccount account = await googleSignIn.signIn();
  final GoogleSignInAuthentication authentication =
      await account.authentication;

  final GoogleAuthCredential credential = GoogleAuthProvider.getCredential(
      idToken: authentication.idToken, accessToken: authentication.accessToken);

  final AuthResult authResult = await _auth.signInWithCredential(credential);
  final FirebaseUser user = authResult.user; // and here as I can't define this FirebaseUser object to return

  return user;
}

Pubspec.yml

dependencies:
  flutter:
    sdk: flutter


  cupertino_icons: ^0.1.3
  firebase_auth: ^0.18.0
  location: ^3.0.2
  page_transition: ^1.1.6
  google_sign_in: ^4.5.1
  flutter_facebook_login: ^3.0.0
  firebase_database: ^4.0.0

AuthResult ile de aynı sorunla karşılaşıyorum

final AuthResult authResult = await _auth.signInWithCredential(credential);

Yanıtlar

37 PeterHaddad Aug 19 2020 at 14:51

Sürüm firebase_auth0.18.0'dan başlayarak :

Uygulamasının en yeni sürümünde firebase_auth, sınıf FirebaseUserolarak değiştirildi Userve sınıf AuthResultolarak değiştirildi UserCredentail. Bu nedenle, kodunuzu şu şekilde değiştirin:

    Future<User> currentUser() async {
      final GoogleSignInAccount account = await googleSignIn.signIn();
      final GoogleSignInAuthentication authentication =
          await account.authentication;

      final GoogleAuthCredential credential = GoogleAuthProvider.credential(
          idToken: authentication.idToken,
          accessToken: authentication.accessToken);

      final UserCredential authResult =
          await _auth.signInWithCredential(credential);
      final User user = authResult.user;

      return user;
    }

FirebaseUser olarak değiştirildi User

AuthResult olarak değiştirildi UserCredential

GoogleAuthProvider.getCredential() olarak değiştirildi GoogleAuthProvider.credential()


onAuthStateChanged kullanıcının oturum açma durumundaki değişiklikleri bildiren, ile değiştirildi authStateChanges()

currentUser()o anda oturum açmış olan kullanıcıyı almak için bir yöntem olan, özelliği ile değiştirilmiştir currentUserve artık bir Future<FirebaseUser>.

Yukarıdaki iki yönteme örnek:

FirebaseAuth.instance.authStateChanges().listen((event) {
   print(event.email);
});

Ve:

var user = FirebaseAuth.instance.currentUser;
print(user.uid);

Yöntem UserUpdateInfoiçin sınıfın kullanımdan kaldırılması firebaseUser.updateProfile. Misal:

Future updateName(String name, FirebaseUser user) async {
  var userUpdateInfo = new UserUpdateInfo();
  userUpdateInfo.displayName = name;
  await user.updateProfile(userUpdateInfo);
  await user.reload(); 
}

şimdi

import 'package:firebase_auth/firebase_auth.dart' as firebaseAuth;
Future updateName(String name, auth.User firebaseUser) async {
  firebaseUser.updateProfile(displayName: name);
  await firebaseUser.reload();
}
1 sleepingkit Aug 19 2020 at 14:50

Çalıştırmak

flutter pub get

Ardından uygulamanızı yeniden oluşturun .

1 PrathamSarankar Sep 17 2020 at 02:14

Bu, Eylül 2020 itibariyle e-posta ve şifre ile oturum açma işleviniz olabilir. Uygulamayı başlat, başka bir firebase yöntemini kullanmadan önce en az bir kez aramamız gereken yeni bir yöntemdir.

 Future<void> signin() async {
    final formState = _formkey.currentState;
    await Firebase.initializeApp();
    if (formState.validate()) {
      setState(() {
        loading = true;
      });
      formState.save();
      try {
        print(email);
        final User user = (await FirebaseAuth.instance
                .signInWithEmailAndPassword(email: email, password: password))
            .user;
      } catch (e) {
        print(e.message);
        setState(() {
          loading = false;
        });
      }
    }
  }
1 Maann Oct 28 2020 at 13:34

Firebase_auth en yeni sürümünde, sınıf FirebaseUser olarak değiştirildi Kullanıcı ve sınıf AuthResult değiştirildi UserCredentail . Bu nedenle değiştirmek FirebaseUser için Kullanıcı

ChamodDissanayake Feb 04 2021 at 21:11

O zamandan beri firebase_auth 0.18.0, sınıf FirebaseUserşu şekilde değiştirildi:User