创建用户时用户的 Firebase setDisplayName Android
Firebase setDisplayName of user while creating user Android
创建用户时,我希望能够设置his/her显示名称。我如何在 Android 中执行此操作?这是我想要实现的示例:
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
FirebaseUser.getCurrentUser().setDisplayName(mName); //I want to do this
}
});
假设所有变量都已声明and/or正确初始化。
我在 Firebase 文档中找到了答案。我会在这里引用它:"If sign-in succeeded, the AuthStateListener runs the onAuthStateChanged callback. In the callback, you can use the getCurrentUser method to get the user's account data." 这是 link:https://firebase.google.com/docs/auth/android/password-auth#sign_in_a_user_with_an_email_address_and_password
这意味着,如果您执行上述代码(减去 FirebaseUser 行),然后声明并初始化 Firebase AuthStateListener,如下所示,您可以设置用户的显示名称,然后继续任何其他 activity 你想要:
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if(user!=null){
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName(mName).build();
user.updateProfile(profileUpdates);
Intent intent = new Intent(currentActivity.this, nextActivity.class);
startActivity(intent);
}
}
};
并且不要忘记像这样在 onResume() 中添加 AuthStateListener:
@Override
public void onResume(){
super.onResume();
mAuth.addAuthStateListener(mAuthListener);
}
同样,不要忘记像这样在 onStop 方法中将其删除:
@Override
public void onStop(){
super.onStop();
if(mAuthListener != null){
mAuth.removeAuthStateListener(mAuthListener);
}
}
大功告成!您设置用户的显示名称,以便您可以在其他活动中使用它。如果您想问候用户或访问与显示名称相关的任何其他用户数据,这将很有用。
您可以通过编写以下三行代码来设置用户的 Firebase 显示名称:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName(mName).build();
user.updateProfile(profileUpdates);
这样做,您的原始代码应该如下所示:
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
// Sign in is successful
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName(mName).build();
user.updateProfile(profileUpdates)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User profile updated.");
}
}
});
}
});
官方 Firebase 文档:
Firebase Update a User's Profile
以上代码的作用是,当使用电子邮件和密码身份验证成功创建用户帐户后,它将让用户登录。
用户登录后,您可以访问用户的 Firebase 用户对象属性并将显示名称 属性 设置为您想要的任何字符串。
这非常适合在验证电子邮件中测试用户的个人资料名称。
注意:Firebase 用户对象具有一组固定的基本属性——唯一 ID、主要电子邮件地址、姓名和照片 URL。这些基本属性存储在项目的用户数据库中。
此外,可以通过编程方式更新这些属性。
但是,您不能直接向 Firebase 用户对象添加其他属性;相反,您可以将任何其他属性(即用户信息)存储在您的 Firebase 实时数据库中,并从那里引用它们。
(Firebase User Object Properties Doc)
创建用户时,我希望能够设置his/her显示名称。我如何在 Android 中执行此操作?这是我想要实现的示例:
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
FirebaseUser.getCurrentUser().setDisplayName(mName); //I want to do this
}
});
假设所有变量都已声明and/or正确初始化。
我在 Firebase 文档中找到了答案。我会在这里引用它:"If sign-in succeeded, the AuthStateListener runs the onAuthStateChanged callback. In the callback, you can use the getCurrentUser method to get the user's account data." 这是 link:https://firebase.google.com/docs/auth/android/password-auth#sign_in_a_user_with_an_email_address_and_password
这意味着,如果您执行上述代码(减去 FirebaseUser 行),然后声明并初始化 Firebase AuthStateListener,如下所示,您可以设置用户的显示名称,然后继续任何其他 activity 你想要:
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if(user!=null){
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName(mName).build();
user.updateProfile(profileUpdates);
Intent intent = new Intent(currentActivity.this, nextActivity.class);
startActivity(intent);
}
}
};
并且不要忘记像这样在 onResume() 中添加 AuthStateListener:
@Override
public void onResume(){
super.onResume();
mAuth.addAuthStateListener(mAuthListener);
}
同样,不要忘记像这样在 onStop 方法中将其删除:
@Override
public void onStop(){
super.onStop();
if(mAuthListener != null){
mAuth.removeAuthStateListener(mAuthListener);
}
}
大功告成!您设置用户的显示名称,以便您可以在其他活动中使用它。如果您想问候用户或访问与显示名称相关的任何其他用户数据,这将很有用。
您可以通过编写以下三行代码来设置用户的 Firebase 显示名称:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName(mName).build();
user.updateProfile(profileUpdates);
这样做,您的原始代码应该如下所示:
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
// Sign in is successful
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName(mName).build();
user.updateProfile(profileUpdates)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User profile updated.");
}
}
});
}
});
官方 Firebase 文档: Firebase Update a User's Profile
以上代码的作用是,当使用电子邮件和密码身份验证成功创建用户帐户后,它将让用户登录。 用户登录后,您可以访问用户的 Firebase 用户对象属性并将显示名称 属性 设置为您想要的任何字符串。
这非常适合在验证电子邮件中测试用户的个人资料名称。
注意:Firebase 用户对象具有一组固定的基本属性——唯一 ID、主要电子邮件地址、姓名和照片 URL。这些基本属性存储在项目的用户数据库中。 此外,可以通过编程方式更新这些属性。 但是,您不能直接向 Firebase 用户对象添加其他属性;相反,您可以将任何其他属性(即用户信息)存储在您的 Firebase 实时数据库中,并从那里引用它们。 (Firebase User Object Properties Doc)