Pri*_*ams 5 javascript firebase firebase-authentication google-cloud-functions
我正在尝试编写一个函数,该函数将在用户创建时发送欢迎电子邮件。我跟着这个教程,它说可以访问新创建的用户的displayNamewith user.displayName,尽管它一直null为我返回。我意识到发生这种情况的可能原因(如果我错了,请纠正我)是注册和设置用户的 displayName 发生在客户端的两个单独步骤中,因此onCreate触发user.displayName时自然为空。这是我的客户端代码,供参考:
fb.auth().createUserWithEmailAndPassword(payload.email, payload.password).then(user => {
return user.user.updateProfile({ displayName: payload.name, });
}).catch(/* ... */);
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一个在user.updateProfile. 我已经查看了该auth.user().onOperation函数(在此处找到),但是当我尝试将此函数部署到Error: Functions did not deploy properly.firebase 时,出现错误(有用,ikr),我想这与该onOperation函数有关private(如果我,请纠正我)我错了)。
有什么办法可以做我想做的事吗?如果是这样,如何?或者,有没有办法设置displayNameon createUserWithEmailAndPassword,以便我可以继续使用该onCreate功能?
这是我当前的onCreate代码:
exports.sendWelcomeEmail = functions.auth.user().onCreate(user => {
console.log('name:', user.displayName);
});
Run Code Online (Sandbox Code Playgroud)
这是我对该onOperation功能的尝试:
exports.sendWelcomeEmail = functions.auth.user().onOperation(user => {
console.log('user:', user);
}, 'updateProfile');
Run Code Online (Sandbox Code Playgroud)
目前没有用于更新 Firebase 身份验证配置文件的 Cloud Functions 触发器。只有 onCreate 和 onDelete。
请参阅:有关用户何时更新电子邮件的 Firebase auth onUpdate 云功能
当前无法在使用电子邮件/密码身份验证创建帐户期间设置用户的 displayName 属性。创建帐户后,需要再次调用来更新配置文件。
请参阅:如何设置 Firebase 用户的 displayName?
基本上,您将不得不解决这些限制。请随时联系 Firebase 支持提交功能请求,以简化此操作。
如果我在你那里,我不会对用户的个人资料使用 firebase auth。也许使用 的集合是一个更好的主意users,您可以在其中访问更新触发器。
通常,我所做的是在有新的身份验证用户时触发,在集合中创建一个用户users。通过这种设计,每次有人更新其个人资料时,您都可以触发。
exports.onCreateAuthUser = functions.auth.user().onCreate(user => {
firestore.collection('users').doc(user.uid).set({
displayName: user.displayName,
email: user.email,
// any other properties
})
//do other stuff
});
exports.onUpdateUser = functions
.firestore.document('users/{id}')
.onUpdate((change, context) => {
// do stuff when user's profile gets updated
}
Run Code Online (Sandbox Code Playgroud)
希望有帮助:)
| 归档时间: |
|
| 查看次数: |
783 次 |
| 最近记录: |