如何设置Firebase用户的displayName?

z9zf31ra  于 2023-01-27  发布在  其他
关注(0)|答案(5)|浏览(109)

根据Firebase网站上的JS Auth文档,它只展示了如何 * 获得displayName以及如何更新displayName。* 所以我尝试更新它。但这有点不符合逻辑,因为如果不创建它,你怎么能更新它呢?
因此,我的问题是,* 如何在注册期间设置用户的displayName?*

function createUser(email, password) {
    firebase.auth().createUserWithEmailAndPassword(email, password).catch(function (error) {
        error.message.replace(".", "");
        alert(error.message + " (" + error.code + ")");
        document.getElementById("password").value = "";
    });
    if (firebase.auth().currentUser != null) {
        firebase.auth().currentUser.updateProfile({
            displayName: document.getElementById("name").value
        }).then(function () {
            console.log("Updated");
        }, function (error) {
            console.log("Error happened");
        });
    }
}

我已经试过了,事实证明不起作用...
真诚的法鲁克

qacovj5a

qacovj5a1#

您必须链接请求:

firebase.auth().createUserWithEmailAndPassword(email, password)
.then(function(result) {
  return result.user.updateProfile({
    displayName: document.getElementById("name").value
  })
}).catch(function(error) {
  console.log(error);
});`
relj7zay

relj7zay2#

我不能直接使用({displayName: name})(编辑器中的sintax错误)。然后,我找到了另一种方法:

UserUpdateInfo updateInfo = UserUpdateInfo();
updateInfo.displayName = name;
result.user.updateProfile(updateInfo);

这是在 dart (我使用的是带有Flutter的 Firebase )。

nbnkbykc

nbnkbykc3#

这是我在firebase v9中使用异步等待时使用的

// firebase-config.js
import { initializeApp } from "firebase/app";
import { getAuth } from "firebase/auth";

const firebaseConfig = {
  apiKey: ...,
  authDomain: ...,
  projectId: ...,
  storageBucket: ...,
  messagingSenderId: ...,
  appId: ...,
  measurementId: ...,
}

const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
// register.js

import { auth } from "../../services/firebase-config"; 
import {
  createUserWithEmailAndPassword,
  sendEmailVerification,
  updateProfile,
} from "firebase/auth";

// handleRegister
const register = async (name, email, password) => {
    try {
      await createUserWithEmailAndPassword(auth, email, password).catch((err) =>
        console.log(err)
      );
      await sendEmailVerification(auth.currentUser).catch((err) =>
        console.log(err)
      );
      await updateProfile(auth.currentUser, { displayName: name }).catch(
        (err) => console.log(err)
      );
    } catch (err) {
      console.log(err);
    }
  };

然后通过传递nameemailpassword调用这个函数onClick/onSubmit
下面是我使用formik onSubmit的实现

onSubmit={({ name, email, password }) => {
  register(name, email, password);
}}

也可以直接调用按钮onClick中的函数

<button onClick={() => register(name, email, password)}>submit</button>
5jdjgkvh

5jdjgkvh4#

firebase
      .auth()
      .createUserWithEmailAndPassword(newUser.email, newUser.password)
      .then((res) => {
        const user = firebase.auth().currentUser;
        return user.updateProfile({
          displayName: newUser.name
        })
      })

"这对我很有效"

c9qzyr3d

c9qzyr3d5#

您需要从firebase/auth导入更新配置文件

import { getAuth, updateProfile } from "firebase/auth";
const auth = getAuth();
updateProfile(auth.currentUser, {
  displayName: "Jane Q. User", photoURL: "https://example.com/jane-q-user/profile.jpg"
}).then(() => {
  // Profile updated!
  // ...
}).catch((error) => {
  // An error occurred
  // ...
});

为我工作
资料来源https://firebase.google.com/docs/auth/web/manage-users#update_a_users_profile

相关问题