我试图创建一个配置文件活动,用户可以在其中更改这些配置文件图片和显示名称,我试图更新用户照片或用户名,CompleteListener调用,task.isSuccessful = true但nothing done,为什么?
更新名称的函数:
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();
}
});
当我试图更新我刚刚上传到Firebase存储的个人资料图片时也是如此...
那主意呢
编辑:
有时候用户名真的更新了,我想这是需要超过10分钟的更新,为什么?
2条答案
按热度按时间ajsxfq5m1#
我有一个类似的问题,用户信息没有更新,直到用户重新认证。我解决了这个问题,也保存在我的firebase数据库中的信息。对我来说,这是有意义的,因为我希望用户能够获得其他用户的基本信息。
我的代码最终看起来像这样。当创建或修改帐户时,我调用了“users/{uid}”端点并更新了那里的对象。从这里开始,我使用GreenRobot EventBus将我的新User对象发送给订阅的人,以便在屏幕上更新它。
数据库监视器的设置是这样完成的。请注意,您需要确保在用户注销时删除侦听器,并在用户登录时添加新侦听器。
dtcbnfnu2#
使用这个简单的代码: