Firebase UI在用户对象下显示displayName为null



我使用Firebase UI Web允许用户注册我的Firebase项目。然后我使用了一个云函数(在Node.js中(:

exports.newUserUpdate = functions.auth.user().onCreate(user => {})

然后向新创建的用户发送电子邮件。当我在user.displayName或console.log中读取user对象时,它会将displayName显示为null。这看起来像是displayName没有在注册时提交。

我使用的是Firebase UI Web 3.4.1。

谢谢。

这是一个已知的问题:https://github.com/firebase/firebase-functions/issues/95

创建用户时,将依次调用以下API:

  • auth.createUserWithEmailAndPassword创建电子邮件/密码用户
  • user.updateProfile在用户上设置显示名称

onCreate事件在显示名称未知的第一次调用中触发。

参见此处的参考updateProfile

我在用电子邮件和密码注册用户时也面临同样的问题,但我不使用云功能来做到这一点。请参阅此处的参考更新配置文件

我使用这种方法在创建用户后更新用户名CCD_ 10;暗语

const res = await auth.createUserWithEmailAndPassword(email, password);
const user = res.user;
// once we get user object then update user display name using following method
await user.updateProfile({displayName: name})

CCD_ 11只取两个参数CCD_;password。这就是为什么displayName在用户对象中为null的原因。为了解决这个问题,我们必须运行user.updateProfile()来更新用户名。

文档中说,

设置身份验证状态观测器并获取用户数据

对于需要登录用户信息的应用程序的每个页面,将观察者附加到全局身份验证对象。这位观察员每当用户的登录状态更改时都会被调用。

使用onAuthStateChanged方法附加观察者。当用户成功登录后,您可以在观察者

firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
var displayName = user.displayName;
var email = user.email;
var emailVerified = user.emailVerified;
var photoURL = user.photoURL;
var isAnonymous = user.isAnonymous;
var uid = user.uid;
var providerData = user.providerData;
// ...
} else {
// User is signed out.
// ...
}
});

相关内容

  • 没有找到相关文章

最新更新