未定义的类“FirebaseUser”

Abd*_*hTh 19 google-authentication dart firebase firebase-authentication flutter

我是 Flutter 的新手。我有Firebase Auth/Google Auth 的问题FirebaseUser未定义代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我也面临与 AuthResult 相同的问题

final AuthResult authResult = await _auth.signInWithCredential(credential);
Run Code Online (Sandbox Code Playgroud)

Pet*_*dad 81

从版本firebase_auth0.18.0 开始:

在最新版本中firebase_auth,类FirebaseUser改为User,类AuthResult改为UserCredential。因此,将您的代码更改为以下内容:

    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;
    }
Run Code Online (Sandbox Code Playgroud)

FirebaseUser 变成 User

AuthResult 变成 UserCredential

GoogleAuthProvider.getCredential() 变成 GoogleAuthProvider.credential()


onAuthStateChanged 通知有关用户登录状态更改的通知已替换为 authStateChanges()

currentUser()这是一种检索当前登录用户的方法,已被属性替换,currentUser并且不再返回Future<FirebaseUser>.

以上两种方法的例子:

FirebaseAuth.instance.authStateChanges().listen((event) {
   print(event.email);
});
Run Code Online (Sandbox Code Playgroud)

和:

var user = FirebaseAuth.instance.currentUser;
print(user.uid);
Run Code Online (Sandbox Code Playgroud)

弃用UserUpdateInfo类的firebaseUser.updateProfile方法。例子:

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

现在

import 'package:firebase_auth/firebase_auth.dart' as firebaseAuth;
Future updateName(String name, auth.User firebaseUser) async {
  firebaseUser.updateProfile(displayName: name);
  await firebaseUser.reload();
}
Run Code Online (Sandbox Code Playgroud)


Use*_*ser 5

自此firebase_auth 0.18.0,班级FirebaseUser改为User