Как подсказать пользователю, когда модал OAuth уже открыт в React Native - PullRequest
1 голос
/ 18 января 2020

Я пытаюсь обработать ошибку account-Существует-с-другим-учетными данными как часть процесса аутентификации firebase. Моя конечная цель - включить «Одна учетная запись на адрес электронной почты» и связать учетные записи с одинаковыми адресами электронной почты, используя linkWithCredential.

Допустим, пользователь уже зарегистрировался по электронной почте / паролю, используя some@gmail.com, который находится в базе данных firebase. Когда пользователь пытается войти в систему с помощью Google OAuth, используя тот же адрес электронной почты, some@email.com, я хочу предложить пользователю ввести пароль для первой учетной записи электронной почты / пароля, чтобы пользователь был проверен и две учетные записи были связаны.

Проблема в Google Expo 101 * или Facebook OAuth открывает модал для слайдов для аутентификации OAuth, и я не уверен, как запросить пароль у пользователя, пока модал открыт , Когда я Navigation.navigate() перехожу на другой экран, в то время как модальный режим открыт, модальный режим неизбежно закрывается. React Native Alert также не имеет функции ввода.

Вот как я обрабатываю ошибку:

if (error.code === 'auth/email-already-in-use' || error.code === 'auth/credential-already-in-use' || error.code === 'auth/account-exists-with-different-credential') {
    const pendingCred = error.credential
    const email = error.email
    firebase
        .auth()
        .fetchSignInMethodsForEmail(email)
        .then(methods => {
            if (methods[0] === 'password') {
                 // somehow prompt the user for password
                const password = promptUserForPassword()
                firebase
                    .auth()
                    .signInWithEmailAndPassword(email, password)
                    .then(user => {
                        return user.linkWithCredential(pendingCred)
                    })
                    .then(() => {
                        goToApp();
                    })
            }
        })
    return;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...