Javascript firebase云功能验证:onCreate事件不';不包含显示名
我有一个onCreate的云函数Javascript firebase云功能验证:onCreate事件不';不包含显示名,javascript,firebase,firebase-authentication,google-cloud-functions,Javascript,Firebase,Firebase Authentication,Google Cloud Functions,我有一个onCreate的云函数 exports.addNewUserToCollection = functions.auth.user().onCreate(event => { const user = event.data; // The Firebase user. var userData = JSON.parse(JSON.stringify(user)); if (!userData.displayName){ userData.d
exports.addNewUserToCollection = functions.auth.user().onCreate(event => {
const user = event.data; // The Firebase user.
var userData = JSON.parse(JSON.stringify(user));
if (!userData.displayName){
userData.displayName = '(no name)'
}
return db
.collection("users")
.doc(user.uid)
.set(userData);
});
除非用户通过电子邮件注册,否则它工作正常。当用户通过电子邮件注册时,系统会提示他们输入名字和姓氏,此信息会写入身份验证数据。
我知道这一点,因为在他们的会话中,我可以调用getCurrentUser()并检索他们的displayName属性 但是,上面代码中的事件数据不包含displayName(或该问题的名字和姓氏)
提供了什么?当您在Firebase身份验证中创建电子邮件+密码帐户时,您只指定了最低限度的信息:电子邮件和密码。例如,在iOS上,这是:
Auth.auth().createUser(withEmail: email, password: password) { (user, error) in
// ...
}
您的云功能是通过以下精确信息触发的:只有电子邮件和密码
虽然稍后可以更新用户配置文件以包含显示名称,但该信息不会传递到云函数触发器(当前仅在创建帐户时触发)
可能的解决办法是:
- 更新用户配置文件以设置显示名称时,从代码中调用云函数
- 将整个用户创建的任务交给云函数,将email+password+displayName传递到自定义函数中,然后自定义函数创建用户帐户,设置其显示名称,并为该用户创建文档