我有一個代碼,用戶可以在其中更新他的憑據/個人資訊,但是我遇到了一個問題并設法解決了它,它說第一個引數必須是一個字串,我找到了一個解決方案,但是后來我收到一個錯誤說“這個操作是敏感的,需要最近的身份驗證。請在重試前重新登錄...

后來我在一些評論中發現我找到了我的
代碼
我從我的 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
}
}
uj5u.com熱心網友回復:
因為auth是Auth 模塊的實體,而不是Firebase Web SDK中的 Auth 模塊的命名空間(因為您使用了const auth = firebase.auth()),所以以下值為undefined:
auth.EmailAuthProvider
這是因為firebase.auth.Auth該類沒有定義屬性EmailAuthProvider。這意味著 JavaScript 會嘗試呼叫undefined.credential(...)并拋出錯誤。
要訪問EmailAuthProviderclass,您需要firebase.auth直接從命名空間訪問它:
firebase.auth.EmailAuthProvider
簡而言之,
firebase.auth !== firebase.auth()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/322661.html
