본문 바로가기
expert

정의되지 않은 클래스 'FirebaseUser'

by RWriter 2023. 1. 24.
반응형

질문 제목:

정의되지 않은 클래스 'FirebaseUser'

질문 내용:

나는 Flutter를 처음 사용합니다.

Firebase 인증/Google 인증

에 문제가 있습니다 .

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

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와 동일한 문제에 직면

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

해결 답변:

버전 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;
    }

FirebaseUser

로 변경

User

AuthResult

로 변경

UserCredential

GoogleAuthProvider.getCredential()

로 변경

GoogleAuthProvider.credential()


onAuthStateChanged

사용자의 로그인 상태에 대한 변경 사항을 알리는 알림이 다음으로 대체되었습니다.

authStateChanges()

currentUser()

현재 로그인한 사용자를 검색하는 메서드가 속성으로 대체되어

currentUser

더 이상

Future<FirebaseUser>

.위의 두 가지 방법의 예:

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

그리고:

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

메서드 에

UserUpdateInfo

대한 클래스 사용 중단 .

firebaseUser.updateProfile

예:

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

지금

import 'package:firebase_auth/firebase_auth.dart' as firebaseAuth;
Future updateName(String name, auth.User firebaseUser) async {
  firebaseUser.updateProfile(displayName: name);
  await firebaseUser.reload();
}
반응형

댓글