firebase云功能验证:onCreate事件不包含displayName

时间:2018-01-22 04:50:30

标签: 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.displayName = '(no name)'
    }

    return db
        .collection("users")
        .doc(user.uid)
        .set(userData);
});

除非用户通过电子邮件注册时才能正常工作 当用户通过电子邮件注册时,系统会提示他们输入姓名,这些信息会将其输入到身份验证数据中 我知道这一点,因为在他们的会话中我可以调用getCurrentUser()并检索他们的displayName属性。

上面代码中的事件数据不包含displayName(或者该名称的姓名)

是什么给出了?

1 个答案:

答案 0 :(得分:0)

在Firebase身份验证中创建电子邮件+密码帐户时,只需指定最低限度的信息:电子邮件和密码。例如在iOS上,这是:

Auth.auth().createUser(withEmail: email, password: password) { (user, error) in
  // ...
}

您的云功能是通过以下精确信息触发的:只需要电子邮件和密码。

虽然以后可以更新用户配置文件以包含显示名称,但该信息不会传递到云功能触发器(目前仅在创建帐户时触发)。