로그인 한 Flutter firebase 사용자가 로그인 후 NULL currentUser를 반환합니다.
Dec 10 2020
signInWithEmailAndPassword () API를 사용하여 firebase에서 인증 할 때 유효한 "현재"사용자를 가져올 수 없습니다.
- 사용자 이름과 비밀번호로 애플리케이션에 로그인합니다.
auth.signInWithEmailAndPassword()
로그인하면 사용자가 홈페이지로 이동합니다.
사용자의 UID를 얻으려고하는데 유효한 사용자가 반환되지 않았습니다. 호출은 다음과 같은 비동기 함수에서 발생합니다.
currentUser = await auth.currentUser();
currentUser가 null입니다.
이 문제의 원인이 될 수있는 아이디어가 있습니까?
답변
1 Keita Dec 10 2020 at 00:08
반환 된 FirebaseUser를 다시로드하면 어떻게 되나요? 이것은 나를 위해 일했습니다.
const User currentUser = await auth.currentUser;
if (currentUser != null) {
await currentUser.reload();
}
명확하게 단순화 된 코드. 참고 : auth.currentUser ()는 이제 auth.currentUser입니다.
중복 일 수 있습니다. Flutter Firebase 인증 currentUser ()는 null을 반환합니다 .
1 DougStevenson Dec 10 2020 at 00:10
문서는 사용자가 로그인하고 User 객체를 사용할 수있을 때 콜백을 받기 위해 인증 상태 관찰자 를 사용하도록 제안합니다 . 링크 된 문서에 표시된대로 :
FirebaseAuth.instance
.authStateChanges()
.listen((User user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
한 순간에만 확인할 수 있으므로 에 의존 하지 않는 것이 좋습니다 currentUser
. 관찰자는 사용자 개체를 사용할 수있는시기를 알려줍니다.
HarshSingh Dec 19 2020 at 03:10
사용자를 얻은 후 참조를 위해 문제 코드를 해결하면 다시로드하십시오.
final FirebaseAuth _auth = FirebaseAuth.instance;
User currentuser;
bool isloggedin= false;
getUser() async{
User user = _auth.currentUser;
await user?.reload();
user = _auth.currentUser;
if(user !=null)
{
setState(() {
this.currentuser = user;
this.isloggedin=true;
});
}
}