Я пытаюсь обработать ошибку 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;
}