无法更新用户的电子邮件

时间:2019-03-27 14:43:12

标签: javascript firebase react-native firebase-authentication

我正在尝试更新当前用户的电子邮件,我去了文档,并复制了那里给他们的示例代码, 但是什么都没用,来自文档的这没用

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) 我应该补充一点,我正在使用react native的异步存储,并将Item(用户的配置文件=> email,name,等等。)存储在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 :(得分:0)

该错误消息告诉您在致电updateEmail时没有用户登录。 SDK不知道您要修改的用户。您需要等到登录完全完成后才能调用该方法。

请注意,所有Firebase API都是异步的,因此您需要利用其返回的Promise来确保调用顺序有效。