web-dev-qa-db-ja.com

Firebaseアカウント作成後にユーザーオブジェクトを返す

Firebase内でユーザーを作成してから、ウェブサーバーのデータベース内にユーザープロファイルを作成しようとしています。私はユーザーを非常にうまく作成する次のコードを実装しました。ただし、データベース構造を作成するためにユーザーID(一意のIDが必要)を受け取る方法がわかりません。 createUserWithEmailAndPasswordが呼び出されたときにユーザーオブジェクトを返す方法はありますか?

firebase.auth().onAuthStateChanged functionを実装しようとしましたが、タイムアウトエラーが発生します

収集していない場合、これはWebアプリ用です。

<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>
11
PowerMan2015

クライアント側でユーザー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

Null以外のfirebase.Promiseを含むnull以外のfirebase.Userを返します

22
Ymmanuel

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を介してユーザーにアクセスできます。

お役に立てれば :)

9
Gerardo BLANCO

createUserWithEmailAndPassword()関数は、メソッドcatch()then()を持ついわゆるPromiseを返します。すでに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";
  // ...
});

createUserWithEmailAndPassword および firebase.User のリファレンスドキュメントを参照してください。

1