私はFirebaseを使用していて、電子メールとパスワードを使用してデータベースにユーザー名を追加しようとしています。
それを行う方法はありますか、それともcreateUserWithEmailAndPassword()
関数はメールとパスワードのみですか?
signUp.addEventListener("click", function(user)
{
var username = usernameTxt.value;
var email = emailTxt.value;
var password = passwordTxt.value;
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error)
{
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode == 'auth/email-already-in-use')
{
alert('email-already-in-use.');
}
else
{
alert(errorMessage);
}
console.log(error);
});
});
CreateUserWithEmailAndPassword()関数でユーザー名を追加する方法を見つけた解決策:
firebase.auth().onAuthStateChanged(function(user) {
var username = usernameTxt.value;
if (user) {
firebaseDataBase.ref('users/' + user.uid).set({
email: user.email,
uid : user.uid,
username: username
});
console.log("User is signed in.");
} else {
console.log("No user is signed in.");
}
});
これはcreateUserWithEmailAndPassword()
では実行できませんが、これにはfirebaseメソッドがあります。 認証状態が変更されたときにリッスンする必要があります、ユーザーを取得、次にプロファイル情報を更新します。下記参照
このコードはcreateUserWithEmailAndPassword()
の後にあります
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// Updates the user attributes:
user.updateProfile({ // <-- Update Method here
displayName: "NEW USER NAME",
photoURL: "https://example.com/jane-q-user/profile.jpg"
}).then(function() {
// Profile updated successfully!
// "NEW USER NAME"
var displayName = user.displayName;
// "https://example.com/jane-q-user/profile.jpg"
var photoURL = user.photoURL;
}, function(error) {
// An error happened.
});
}
});
ここのfirebase User Apiで述べたように、 https://firebase.google.com/docs/reference/js/firebase.User#updateProfile
お役に立てれば
そのデータベースusers
子ノードを自分で作成する必要があります;-)
createUserWithEmailAndPassword
関数onlyは、Firebase認証サービスで新しいユーザーを作成します。結果として、データベース自体はまったく変更されません。
この新しいユーザーもデータベースに追加するには、次のことを試してください。
firebase.database().ref("users").child(user.uid).set(...)
users
エンドポイントを作成し、そこにカスタムユーザーデータを保存できます。
function writeUserData(userId, name, email, imageUrl) {
firebase.database().ref('users/' + userId).set({
username: name,
email: email,
profile_picture : imageUrl,
// Add more stuff here
});
}
https://firebase.google.com/docs/database/web/read-and-write をご覧ください