我有一个Android应用程序,用户使用电子邮件、密码和显示名称注册帐户。我想在用户创建帐户后向他们发送一封欢迎电子邮件。这就是我创建帐户并设置其显示名称的方式。
// 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函数就会被触发,并且我在创建帐户后设置用户的显示名称,因此函数中的displayName
就是null
。我能做些什么来解决这个问题?我不想向电子邮件中没有用户姓名的用户发送电子邮件。
tl;dr:displayName在设置之前被调用。
onCreate
函数在前端完成createUserWithEmailAndPassword
之后但在设置displayName之前运行。
更新displayName后运行onCall函数,或者按照firebase github线程中关于此问题的建议,您可以向createUserWithEmailAndPassword
添加配置文件参数,以便我们使用预先填充的配置文件创建新帐户。