Когда пользователи регистрируются, они используют Телефонную аутентификацию. После некоторого использования приложения им рекомендуется привязать (адрес электронной почты и пароль) к своей существующей учетной записи.
Процесс связывания завершается неудачно из-за ошибки (auth / requires-Recent-login.) Мой код следует.
// The following generates the error: [auth/requires-recent-login] This operation is sensitive and requires recent authentication. Log in again before retrying this request.
const emailCredential = firebase.auth.EmailAuthProvider.credential(state.email, state.password);
const newCredential = await firebase.auth().currentUser.linkWithCredential(emailCredential);
Я понимаю, что чтобы исправить эту ошибку, мне нужно вызвать reauthenticateWithCredential () перед связыванием. Однако я не хочу просить пользователя снова войти в систему (получить и ввести проверочный код). Возможно ли это вообще?
Я попытался передать результат currentUser.getIdToken(true)
в PhoneAuthProvider.credential()
. Не уверен, что это правильно. В любом случае, это сгенерировало ошибку (Невозможно создать PhoneAuthCredntial без verifyProof, sessionInfo, временного подтверждения или идентификатора регистрации.).
Мой код следует.
// The following works:
const accessToken = await firebase.auth().currentUser.getIdToken(true);
// The following works:
const currentCredential = firebase.auth.PhoneAuthProvider.credential(accessToken);
// The following generates the error: Cannot create PhoneAuthCredential without either verificationProof, sessionInfo, temporary proof, or enrollment ID.
const abc = await firebase.auth().currentUser.reauthenticateWithCredential(currentCredential);
// The following is never reached:
const emailCredential = firebase.auth.EmailAuthProvider.credential(state.email, state.password);
const newCredential = await firebase.auth().currentUser.linkWithCredential(emailCredential);
Спасибо за ваши усилия и время, чтобы помочь мне ...