반응형
질문 제목:
정의되지 않은 클래스 '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_auth
0.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();
}
반응형
'expert' 카테고리의 다른 글
재사용 가능한 위젯을 생성하기 위한 함수와 클래스의 차이점은 무엇입니까? (0) | 2023.01.24 |
---|---|
Flutter(Dart)의 객체 목록을 속성 값으로 정렬 (0) | 2023.01.24 |
Dart null-safety로 마이그레이션한 후 "수신자가 null일 수 있기 때문에 연산자를 무조건적으로 호출할 수 없습니다" 오류 (0) | 2023.01.24 |
NoSuchMethod 오류란 무엇이며 어떻게 수정합니까? (0) | 2023.01.24 |
Flutter 앱 화면에서 서버의 응답을 표시하는 방법은 무엇입니까? (0) | 2023.01.24 |
댓글