Saat ini saya bekerja dengan Firebase. Saat ini saya menggunakan com.google.firebase:firebase-auth:10.0.1
Membuat pengguna, Masuk berfungsi dengan baik.
Sekarang saya ingin menambahkan opsi bagi pengguna yang memungkinkan pengguna mengubah nama tampilan dan gambar profilnya
Dalam Aktivitas A saya memanggil metode ini, dengan mengklik tombol:
public void updateFirebaseUser(String newDisplayName, Uri newPhotoUri) {
final FirebaseAuth auth = FirebaseAuth.getInstance();
final FirebaseUser user = auth.getCurrentUser();
if (user == null || (TextUtils.isEmpty(newDisplayName) && newPhotoUri == null)) {
return;
}
UserProfileChangeRequest.Builder builder = new UserProfileChangeRequest.Builder();
if (!TextUtils.isEmpty(newDisplayName)) {
builder.setDisplayName(newDisplayName);
}
if (newPhotoUri != null) {
builder.setPhotoUri(newPhotoUri);
}
UserProfileChangeRequest request = builder.build();
user.updateProfile(request)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(context, "profile update success = " + task.isSuccessful(),
Toast.LENGTH_SHORT)
.show();
}
});
}
Segalanya tampak berfungsi, karena saya menerima Toast di layar saya, yang menampilkan "profile update success = true"
Nanti di aplikasi saya ingin menampilkan info pengguna, saya memanggil fillUserViews()
di Aktivitas B. Tetapi informasi lama saya tetap ditampilkan.
private void fillUserViews(NavigationView navigationView) {
View headerView = navigationView.getHeaderView(0);
FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();
ImageView avatarVIew = (ImageView) headerView.findViewById(R.id.img_avatar);
picasso.load(user.getPhotoUrl())
.into(avatarVIew);
TextView userName = (TextView) headerView.findViewById(R.id.txt_name);
userName.setText(user.getDisplayName());
TextView userMail = (TextView) headerView.findViewById(R.id.txt_mail);
userMail.setText(user.getEmail());
}
Memulai ulang aplikasi juga tidak membantu di sini. Tetapi jika saya logout dan login kembali lagi, data pengguna saya diperbarui.
Saya rasa ini ada hubungannya dengan cache internal Firebase. Itu sebabnya saya menambahkan baris ini auth.getCurrentUser().reload();
setelah bersulang.
Apakah ada kemungkinan untuk memaksakan permintaan pembaruan ke Firebase? Saya tidak menemukan apa pun di dokumentasi.
Terima kasih sebelumnya!