[英]Signup form the profile update after creating user auth is not working Firebase
我有一個用於 singup 的表單,它保存了用戶的名稱,包括一個 photoURL,額外的。 今天由於某種原因不再保存名稱,至少當我使用 firebase CLI 提取數據時,我看不到它。 請看下面的代碼:
我試圖改變邏輯,還注意到用戶沒有進入第二個
<div class="login-page">
<div class="form">
<form class="register-form" id="register-form">
<input type="text" id="displayName" name="displayName" placeholder="name"/>
<input type="text" id="token" name="phoneNumber" placeholder="token"/>
<input type="password" id="password"name="password" placeholder="password"/>
<input type="text" id="email" name="email" placeholder="email address"/>
<button type="button" onclick="registerPasswordUser();">register</button>
</form>
</div>
</div>
<script>
// Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "",
authDomain: "",
projectId: "",
storageBucket: "",
messagingSenderId: "",
appId: ""
};
firebase.initializeApp(firebaseConfig);
const auth = firebase.auth();
function registerPasswordUser(){
var form = document.getElementById("register-form");
var email = document.getElementById("email").value;
var displayName = document.getElementById("displayName").value;
var password = document.getElementById("password").value;
var photoURL = document.getElementById("token").value;
var user = null;
auth.createUserWithEmailAndPassword(email, password)
.then(function () {
if (auth && auth.currentUser) {
user = auth.currentUser;
console.log('auth', auth);
console.log('currentUser', auth.currentUser);
user.sendEmailVerification();
}
})
.then(function () {
user.updateProfile({
displayName: displayName,
photoURL: photoURL
});
form.reset();
document.getElementById("email").value = "";
document.getElementById("displayName").value = "";
document.getElementById("password").value = "";
document.getElementById("token").value = "";
location.reload();
})
.catch(function(error) {
console.log(error.message,7000);
});
}
</script>
控制台上也沒有出現任何錯誤,email 和密碼正在正確創建。 至少我可以在控制台中看到。 你有什么主意嗎?
*** 更新 ***
為了更新我的問題,我只是意識到這適用於 IE,保存用戶名的位置,如果我使用另一個瀏覽器,只是不要簡單的工作,如前所述,不要出現任何錯誤並保存好email 和密碼。
此處的代碼不會按預期工作:
auth.createUserWithEmailAndPassword(email, password)
.then(function () {
if (auth && auth.currentUser) {
user = auth.currentUser;
console.log('auth', auth);
console.log('currentUser', auth.currentUser);
user.sendEmailVerification();
}
})
即使您使用異步調用, auth.currentUser
也不會像您期望的那樣擁有用戶。 您可以使用您在 function 中獲得的值,如下所示:
firebase.auth().createUserWithEmailAndPassword(email, password)
.then((userCredential) => {
// Signed in
var user = userCredential.user;
// ...
})
.catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
// ..
});
或者每次用戶使用這種代碼進行更改時進行同步:
firebase.auth().onAuthStateChanged((user) => {
if (user) {
// User is signed in, see docs for a list of available properties
// https://firebase.google.com/docs/reference/js/firebase.User
var uid = user.uid;
// ...
} else {
// User is signed out
// ...
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.