не может обновить электронную почту пользователя - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь обновить электронную почту текущего пользователя, я зашел в документацию и скопировал приведенный там пример кода, но ничего не получилось, это из doc не сработало

var user = firebase.auth().currentUser;

user.updateEmail("newemail@example.com").then(function() {
  console.log('success')
}).catch(function(error) {
  console.log('failed')
});

Я также пытался:

 try {

   await user.updateEmail('test@test.com').then(function() {
     console.log('success')           
   }).catch(function(error) {
     handleErrors(dispatch, error.message);
   });

 } catch(e) {
   handleErrors(dispatch, e.message);
 }

Не могли бы вы помочь решить эту проблему?

обновление:

извините, я не включил точную ошибку, которая появляется вконсоль, вот ошибка:

Эта операция чувствительна и требует недавней аутентификации.Еще раз войдите в систему, прежде чем повторить этот запрос.

2) Я должен добавить, что я использую асинхронное хранилище реагировать нативно, и я сохраняю этот элемент (профиль пользователя => email, name, ect ..)в reduxPersist

таков мой код входа в систему:

export const login = ( email, password ) => {

        return async (dispatch) => {

            dispatch({ type: ATTEMPTING });
           try { 
            await firebase.auth().signInWithEmailAndPassword(email, password)
                .then(resp => handleLoginSuccess(dispatch, resp.uid,resp.name,email))
                .catch(error => handleErrorLogin(dispatch, error.message));
           }catch(e){
            handleErrorLogin(dispatch, e.message);
           }
        };

    };


  const handleLoginSuccess = async(dispatch , userId,name,email) => {

       try{
        const profile = { userId, name, email  };
        await AsyncStorage.setItem('userProfile', JSON.stringify(profile));
        dispatch({ type: LOGIN_SUCCESS, payload: profile });
       }catch(e){
            alert(e.message);
       }

     }

1 Ответ

0 голосов
/ 27 марта 2019

В сообщении об ошибке сообщается, что в момент вызова updateEmail пользователь не вошел в систему.SDK не знает, какого пользователя вы пытаетесь изменить.Вам нужно подождать до полного завершения входа в систему, прежде чем вызывать этот метод.

Обратите внимание, что все API-интерфейсы Firebase являются асинхронными, поэтому вам нужно будет использовать их возвращенные обещания, чтобы убедиться в порядкезвонки действительны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...