【发布时间】:2021-12-04 14:44:55
【问题描述】:
我有一个代码,用户可以在其中更新他的凭据/个人信息,但是我遇到了一个问题并设法解决了它,它说第一个参数必须是一个字符串,我找到了一个解决方案,但是后来我得到了一个错误说"此操作很敏感,需要最近的身份验证。请重新登录,然后重试...
后来我在一些 cmets 中找到了我的 first solution 如下:
user.reauthenticateWithCredential(auth.EmailAuthProvider.credential(user.email, user.password)).then(() => user.updateEmail(email)) 我尝试使用它,但无法正常工作,之后出现其他错误,想知道这是过时的还是我做错了。
代码
我从我的 firebase.js 获得我的身份验证
const db = firebase.firestore();
const auth = firebase.auth();
const storage = firebase.storage();
我从我的 App.js 获取我的用户,然后如果我需要它,我只需像这样发送它:
function App() {
const [user, setUser] = useState([]);
useEffect(() => {
auth.onAuthStateChanged((authUser) => {
if (authUser) {
setUser(authUser);
} else {
setUser(false);
}
})
}, [])
return (
....
<Route path = "/Update_Profile">
<Inicio user={user}/>
<UpdateProfile user={user}/>
</Route>
...
)}
export default App;
const updateEmail = (e) => {
e.preventDefault();
if (user && (email != "")) {
user.reauthenticateWithCredential(auth.EmailAuthProvider.credential(user.email, user.password))
.then(() => user.updateEmail(email))
const ref = db.collection("usuarios").doc(user.uid)
ref.update({
email: email
})
} else {
//User is not logged in, handle that case here
}
}
【问题讨论】:
-
请包括您定义
user和auth对象的位置。 -
我刚刚添加了它
-
您应该研究如何利用React Contexts 将您的用户传递给子组件。 here 包含了一个有点复杂但功能强大的用户上下文示例。由于这似乎是一个新项目,您还应该改用modular Firebase SDK。
标签: javascript firebase firebase-authentication