我正在尝试更新当前用户的电子邮件,我去了文档,并复制了那里给他们的示例代码, 但是什么都没用,来自文档的这没用
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);
}
}
答案 0 :(得分:0)
该错误消息告诉您在致电updateEmail
时没有用户登录。 SDK不知道您要修改的用户。您需要等到登录完全完成后才能调用该方法。
请注意,所有Firebase API都是异步的,因此您需要利用其返回的Promise来确保调用顺序有效。