创建帐户后,在firebase函数中获取用户的显示名称

时间:2018-12-13 20:57:10

标签: java android firebase firebase-cloud-messaging

我有一个Android应用,用户在其中使用他们的电子邮件密码 displayName 注册一个帐户。我想在用户创建帐户后向其发送欢迎电子邮件。这就是我创建帐户并设置其显示名称的方式。

// This happens in Android (RegisterActivity.java) where I create user's account
FirebaseAuth auth = FirebaseAuth.getInstance();
auth.createUserWithEmailAndPassword(email, password)
        .addOnSuccessListener(new OnSuccessListener<AuthResult>() {
            @Override
            public void onSuccess(AuthResult authResult) {
                FirebaseUser user = authResult.getUser();
                user.updateProfile(new UserProfileChangeRequest.Builder()
                        .setDisplayName(name).build());
            }
        });

创建用户帐户后,将触发firebase函数。下面是我的代码:

// This happens in Firebase Cloud Functions (index.js)
exports.sendWelcomeEmail = functions.auth.user().onCreate((user) => {
    // send welcome email here
    console.log(user.displayName) // displayName is null here
});

我相信,一旦创建帐户成功,就会触发firebase函数,并且我在创建帐户后设置了用户的显示名称,因此函数中的displayNamenull。我该怎么做才能解决这个问题?我不想向用户发送电子邮件,而电子邮件中没有他们的名字。

1 个答案:

答案 0 :(得分:0)

tl; dr:在设置之前要调用displayName。

onCreate函数在前端完成createUserWithEmailAndPassword之后但在设置displayName之前运行。

您可以在更新displayName之后运行onCall函数,或者按照此问题在firebase github线程上的建议运行,您可以向createUserWithEmailAndPassword添加配置文件参数,以便我们使用预先填充的配置文件创建新帐户