在用户的gmail中更新Firebase数据库中的数据时无法对其进行

时间:2018-10-07 09:23:19

标签: java android firebase firebase-realtime-database firebase-authentication

我在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而不是新的

0 个答案:

没有答案