Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript firebase云功能验证:onCreate事件不';不包含显示名_Javascript_Firebase_Firebase Authentication_Google Cloud Functions - Fatal编程技术网

Javascript firebase云功能验证: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

我有一个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.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传递到自定义函数中,然后自定义函数创建用户帐户,设置其显示名称,并为该用户创建文档

我明白了。我正在使用firebaseui web react,它是在firebaseui web之上构建的,我想它正在为我更新显示名。谢谢你的回答