Flutter - Firebase Authentication с Facebook не сохранит информацию о пользователе в базу данных - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу позволить пользователю войти в систему с помощью 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;
    }

...