Android Firebase UserProfileChangeRequest不是';行不通

Android Firebase UserProfileChangeRequest不是';行不通,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我正在尝试创建一个配置文件活动,用户可以在其中更改这些配置文件图片和显示名称,我正在尝试更新用户照片或用户名,CompleteListener调用,task.isSuccessful=true,但是没有完成,为什么 要更新名称的函数: FirebaseUser mFirebaseUser = FirebaseAuth.getInstance().getCurrentUser(); final String newName; newName = input.getText().toString()

我正在尝试创建一个配置文件活动,用户可以在其中更改这些配置文件图片和显示名称,我正在尝试更新用户照片或用户名,CompleteListener调用,task.isSuccessful=true,但是没有完成,为什么

要更新名称的函数:

FirebaseUser mFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
final String newName;
newName = input.getText().toString();
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName(newName)
.build();
mFirebaseUser.updateProfile(profileUpdates)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
DatabaseReference mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference().child("users");
   mFirebaseDatabaseReference.child(mFirebaseUser.getUid()).child("DisplayName").setValue(newName);
updateUI();
Toast.makeText(ProfileActivity.this, "User display name updated.", Toast.LENGTH_SHORT).show();
} else
Toast.makeText(ProfileActivity.this, "Error while updating display name.", Toast.LENGTH_SHORT).show();
}
});
FirebaseUser mFirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
最后一个字符串newName;
newName=input.getText().toString();
UserProfileChangeRequest profileUpdates=新建UserProfileChangeRequest.Builder()
.setDisplayName(新名称)
.build();
mFirebaseUser.updateProfile(配置文件更新)
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
DatabaseReference mFirebaseDatabaseReference=FirebaseDatabase.getInstance().getReference().child(“用户”);
mFirebaseDatabaseReference.child(mFirebaseUser.getUid()).child(“DisplayName”).setValue(newName);
updateUI();
Toast.makeText(ProfileActivity.this,“用户显示名称已更新)”,Toast.LENGTH_SHORT.show();
}否则
Toast.makeText(ProfileActivity.this,“更新显示名称时出错。”,Toast.LENGTH_SHORT.show();
}
});
当我试图更新刚刚上传到Firebase存储的个人资料图片时也是如此

你有什么想法

编辑:


有时用户名真的会被更新,我想更新需要10分钟以上,为什么?

我遇到过类似的问题,在用户重新验证之前,用户信息不会更新。我还通过将此信息保存在firebase数据库中解决了此问题。对我来说,这是有意义的,因为我希望用户无论如何都能够获得其他用户的基本信息

我的代码最终看起来像这样。创建或修改帐户时,我调用了“users/{uid}”端点并更新了那里的对象。在这里,我使用将我的新用户对象发送给订阅的用户,以便在屏幕上更新它

private FirebaseUser firebaseUser;

public void createUser(String email, String password, final User user, Activity activity, final View view) {
    FirebaseAuth.getInstance().createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(activity, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                Log.d(TAG, "createUserWithEmail:onComplete:" + task.isSuccessful());

                // If sign in fails, display a messsage to the user. If sign in successful
                // the auth state listener will be notified and logic to handle
                // signed in user can be handled in the listener
                if (!task.isSuccessful()) {
                    Snackbar.make(view, task.getException().getLocalizedMessage(), Snackbar.LENGTH_SHORT).show();
                } else {
                    firebaseUser = task.getResult().getUser();

                    UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
                        .setDisplayName(user.displayName)
                        .build();
                    firebaseUser.updateProfile(profileUpdates);
                    updateDatabase(user);

                    EventBus.getDefault().post(new LoginEvent());
                }
            }
        });
}

public boolean updateDatabase(User user) {
    if (firebaseUser == null) {
        Log.e(TAG, "updateDatabase:no currentUser");
        return false;
    }

    return userReference.setValue(user).isSuccessful();
}
使用以下简单代码:

UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
    .setDisplayName(newName)
    .build();

用户是使用
createUserWithEmailAndPassword()创建的吗?
?我正在使用Google Signin创建用户,该用户出现在控制台中。我注意到,如果您注销并再次登录,它会更新。。但它似乎并没有马上完成..Builder().build();(!?)……smh。。。。我永远也不会明白的,谢谢。
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
    .setDisplayName(newName)
    .build();