如何在firebase中创建帐户时使用云功能来保存用户的displayName

时间:2017-08-21 22:01:43

标签: firebase firebase-realtime-database firebase-authentication google-cloud-functions

问题:创建用户帐户时,如何使用云功能将displayName保存到firebase中的实时数据库

方案步骤:

  1. 我有一个包含email, password, displayName字段的注册页面, 允许用户在firebase中创建新帐户

  2. 上面的页面将1)触发createUserWithEmailAndPassword来创建 用户帐户,2)将displayName值保存到Auth DB中的userProfile。

  3. 在云端功能中,使用以下代码,以便新用户的电子邮件可以 保存到DB users节点。

  4. exports.createProfile = functions.auth.user().onCreate(event => return admin.database().ref(`/users/${event.data.uid}`).update ({email: event.data.email})

    1. 我希望使用上面的代码将displayName保存到users节点,但似乎不可能,因为它不在event onCreate的上下文中。
    2. 我该怎么办?如果我需要使用客户端和云功能来更新users节点,那就太讨厌了。

      祝你好运, d

2 个答案:

答案 0 :(得分:1)

firebase.User.updateProfile()方法完成后,您需要使用displayName方法更新firebase.auth().createUserWithEmailAndPassword(email, password)。像这样 -

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function (error) {

}).then(function (user) {
        user.updateProfile({
            displayName: "Jane Q. User",//pass displayName from your signup form here
            photoURL: "<image-url>"//you can pass this empty
        }).then(function () {
            //redirect to your post-registration page
        });
})

答案 1 :(得分:0)

auth事件的documentation表明displayName可以通过event.data.displayName访问。如果你看到任何其他行为,那就是一个错误,或者你可能做错了,你在这里没有提到。