[英]Firebase Returning user object after account creation
我試圖在 Firebase 中創建一個用戶,然后在網絡服務器上的數據庫中創建一個用戶配置文件。 我已經實現了以下代碼,可以很好地創建用戶。 但是我不確定如何接收用戶 ID(我需要一個唯一 ID)來創建數據庫結構。 有沒有辦法在調用 createUserWithEmailAndPassword 時返回用戶對象?
我曾嘗試實現firebase.auth().onAuthStateChanged
函數,但隨后收到超時錯誤
如果你還沒有收集,這是一個網絡應用程序。
<script>
function createUser() {
var Result = "true";
var textUser = document.getElementById('userName').value;
var textPassword = document.getElementById('userPassword').value;
var textAccountID = document.getElementById('accountRef').value;
var textDateCreated = document.getElementById('dateCreated').value;
var textDisplayName = document.getElementById('displayName').value;
var UID;
firebase.auth().createUserWithEmailAndPassword(textUser, textPassword).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
return Result = "false";
// ...
});
writeUserData(UID, textDisplayName, textAccountID, textDateCreated);
return Result;
}
function writeUserData(userId, displayName, accountID, dateCreated) {
firebase.database().ref('User/' + userId).set({
userId:{
AccountID: accountID,
Created: dateCreated,
Name: displayName}
});
}
</script>
為了在客戶端獲取用戶 ID,您應該這樣做:
firebase.auth().createUserWithEmailAndPassword(textUser, textPassword)
.then(function(user){
console.log('uid',user.uid)
//Here if you want you can sign in the user
}).catch(function(error) {
//Handle error
});
正如這里描述的那樣:
https://firebase.google.com/docs/reference/js/firebase.auth.Auth#createUserWithEmailAndPassword
返回包含非空 firebase.User 的非空 firebase.Promise
看起來 firebase 對這個方法做了一些改變。 接受的解決方案需要一些修復:
firebase.auth().createUserWithEmailAndPassword(textUser, textPassword)
.then(function(data){
console.log('uid',data.user.uid)
//Here if you want you can sign in the user
}).catch(function(error) {
//Handle error
});
現在您可以通過 data.user 訪問用戶
希望這有幫助:)
createUserWithEmailAndPassword()
函數返回一個所謂的 Promise,它有方法catch()
和then()
。 您已經在使用catch()
來處理問題。 要處理“非問題”,您需要使用then()
:
firebase.auth().createUserWithEmailAndPassword(textUser, textPassword)
.then(function(user) {
console.log(user); // see https://firebase.google.com/docs/reference/js/firebase.User
})
.catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
return Result = "false";
// ...
});
firebase.auth().createUserWithEmailAndPassword(email.value, password.value).then(function (user) {
//var user = firebase.auth().currentUser;
alert('Cadastro feito com sucesso!', "success");
console.log("New user Id: "+ user.uid);
}).catch(function (error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// [START_EXCLUDE]
if (errorCode == 'auth/weak-password') {
alert('A senha é muito fraca.', "warning");
//alert('A senha é muito fraca.');
} else if (errorMessage == "The email address is already in use by another account.") {
errorMsg = "Esse email já está sendo usado por outra conta";
alert(errorMsg, "danger");
//alert(errorMessage);
}else{
alert(errorMessage);
}
// [END_EXCLUDE]
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.