Как удалить пользователя Firebase, зарегистрированного у провайдера Facebook? - PullRequest
0 голосов
/ 29 октября 2019

У меня есть следующий код для повторной аутентификации пользователя:

checkAccountPassword(password) {
        if (this.isFirebaseUserLoggedWithFacebook()) {
            return this.afAuth.auth.currentUser.reauthenticateAndRetrieveDataWithCredential(firebase.auth.FacebookAuthProvider.credential(facebookToken - WHERE_CAN_I_FIND_THIS_TOKEN?????));
        }
        return this.afAuth.auth.currentUser.reauthenticateAndRetrieveDataWithCredential(firebase.auth.EmailAuthProvider.credential(firebase.auth().currentUser.email, password));
    }

Затем я могу удалить пользователя (потому что удаление требует недавнего аутентификации).

Проблема в том, что я не могу получитьтокен, который мне нужен для повторного доступа пользователя FB.

У меня есть код, где я могу получить токен, но это на всякий случай, когда у пользователя установлено приложение Facebook, но если пользователь использует всплывающее окно для входа в Facebook, я неНе могу понять, где я могу получить facebookToken

 doFacebookLogin() {
        if (this.platform.is('cordova')) {
            return from(this.fb.login(['email', 'public_profile'])).pipe(
                switchMap(response => {
                    this.currentFacebookCredential = firebase.auth.FacebookAuthProvider.credential(response.authResponse.accessToken);
                    return from(firebase.auth().signInAndRetrieveDataWithCredential(this.currentFacebookCredential));
                }),
                switchMap(() => {
                    return this.afAuth.idToken;
                }),
                first(),
            );
        } else {
            const provider = new firebase.auth.FacebookAuthProvider();
            provider.addScope('email');
            provider.addScope('public_profile');
            return from(this.afAuth.auth.signInWithPopup(provider)).pipe(

                switchMap(() => this.afAuth.idToken),
                first(),
            );
        }
    }

1 Ответ

0 голосов
/ 30 октября 2019

Я нашел решение, мне нужно снова вызвать doLogin () и сохранить объект в currentFacebookCredential для popup-login-case следующим образом:

return from(this.afAuth.auth.signInWithPopup(provider)).pipe(
                tap(userCred => {
                   this.currentFacebookCredential =  userCred.credential;
                }),
                switchMap(() => this.afAuth.idToken),
                first(),
            );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...