我在Android应用中使用firebase。用户使用gmail登录应用。在用户首次登录应用程序时,我将其数据存储在数据库中。用户首次登录应用程序后,如果gmail中的数据已更改,则应用程序应更新数据库中的用户数据。问题在于,在gmail mAuth.getCurrentUser().getDisplayName()
中更改邮件的用户名后,将返回旧用户名而不是新用户名。
这是我的代码:
userName = user.getDisplayName();
userImage = user.getPhotoUrl().toString();
userEmail = user.getEmail();
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (!dataSnapshot.child(mAuth.getUid()).exists()) {
Map<String, Object> map = new HashMap<>();
map.put("userName", userName);
map.put("userImage", userImage);
map.put("userEmail", userEmail);
map.put("points", 0);
map.put("acceptedQuestions", 0);
map.put("refusedQuestions", 0);
map.put("acceptedLessons", 0);
map.put("refusedLessons", 0);
map.put("userType", userType);
myRef.child(mAuth.getUid()).setValue(map);
}
else {
currentUserReference = myRef.child(mAuth.getUid());
currentUserReference.child("userName").setValue(userName);
currentUserReference.child("userImage").setValue(userImage);
currentUserReference.child("userType").setValue(userType);
Toast.makeText(GeneralSignActivity.this, "user name is : " + userName, Toast.LENGTH_SHORT).show();
}
我想知道的是,userName变量返回的是旧的userName而不是新的