我使用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. // ... } });