Я хочу позволить пользователю войти в систему с помощью Facebook и проверить, существует ли пользователь в базе данных или нет. Если пользователь (uid) уже существует, он должен войти в систему в обычном режиме, но если пользователь нет в базе данных, то я хочу отправить пользователя на страницу создания учетной записи. Это мой код, но он не работает. Это позволяет пользователю войти в систему, но не получает никаких данных из профиля пользователя, что я могу сделать?
//Login with Facebook
void signInUsingFacebook() async {
final FacebookLogin facebookLogin = FacebookLogin();
final FacebookLoginResult facebookLoginResult =
await facebookLogin.logIn(['email']);
switch (facebookLoginResult.status) {
case FacebookLoginStatus.loggedIn:
// TODO: Handle this case.
FirebaseAuth.instance.signInWithCredential(
FacebookAuthProvider.getCredential(
accessToken: facebookLoginResult.accessToken.token),
);
FirebaseUser currentUser = await FirebaseAuth.instance.currentUser();
if (currentUser != null) {
print('user is logged in');
await _pushNotificationService.initialise();
final DocumentSnapshot doc =
await usersRef.document(currentUser.uid).get();
//Storing the user data in the firestore database
if (!doc.exists) {
final userDetails = await Navigator.push(context,
MaterialPageRoute(builder: (context) => CreateAccount()));
_db.collection("users").document(currentUser.uid).setData({
"username": userDetails[1],
"displayName": userDetails[2],
"email": currentUser.email,
"photUrl": userDetails[0],
"gender": userDetails[3],
"timestamp": timestamp,
"signin_method": currentUser.providerId,
"location": userDetails[4],
"uid": currentUser.uid,
"points": 0,
"bio": userDetails[5],
});
}
}
break;
case FacebookLoginStatus.cancelledByUser:
// TODO: Handle this case.
print('cancelled by user');
break;
case FacebookLoginStatus.error:
// TODO: Handle this case.
print('login error');
break;
}