1. ホーム
  2. firebase

[解決済み】Firebase v3 updateProfile メソッド

2022-01-26 03:33:50

質問

Firebase v3 Authでは updateProfile を渡すメソッドです。 displayNamephotoURL をFirebaseに送信します。

私の理解では、これらのプロパティは、ユーザーのログイン時にサードパーティのoAuthプロバイダであるGoogle、Facebook、Twitter、またはGitHubから取得されるものです。 パスワードベースの認証の場合、これらは管理コンソールから利用したり閲覧したりすることはできません。

パスワード認証のアカウントにこの情報を保存できますか?保存できる場合、管理コンソールからこの情報を表示/管理できますか?

ちなみに、リアルタイムデータベースで users node/branch ですが、この情報を Firebase Auth システムに保存することについて質問しています。

// Updates the user attributes:
user.updateProfile({
  displayName: "Jane Q. User",
  photoURL: "https://example.com/jane-q-user/profile.jpg"
}).then(function() {
  // Profile updated successfully!
  // "Jane Q. User"
  var displayName = user.displayName;
  // "https://example.com/jane-q-user/profile.jpg"
  var photoURL = user.photoURL;
}, function(error) {
  // An error happened.
});

// Passing a null value will delete the current attribute's value, but not
// passing a property won't change the current attribute's value:
// Let's say we're using the same user than before, after the update.
user.updateProfile({photoURL: null}).then(function() {
  // Profile updated successfully!
  // "Jane Q. User", hasn't changed.
  var displayName = user.displayName;
  // Now, this is null.
  var photoURL = user.photoURL;
}, function(error) {
  // An error happened.
});

解決方法は?

.updateProfile を格納します。 displayNamephotoURL プロパティを Firebase Auth システムで使用することができます。 そのため、このようなものを users ノードを作成します。

Firebase v3 Auth Consoleでは、これらのプロパティは表示されません。 その方法では見ることができないのです。

パスワードユーザーを登録する方法をまとめました。

registerPasswordUser(email,displayName,password,photoURL){
  var user = null;
  //nullify empty arguments
  for (var i = 0; i < arguments.length; i++) {
    arguments[i] = arguments[i] ? arguments[i] : null;
  }

  firebase.auth().createUserWithEmailAndPassword(email, password)
  .then(function () {
    user = firebase.auth().currentUser;
    user.sendEmailVerification();
  })
  .then(function () {
    user.updateProfile({
      displayName: displayName,
      photoURL: photoURL
    });
  })
  .catch(function(error) {
    console.log(error.message);
  });
  console.log('Validation link was sent to ' + email + '.');
}