首页 > 解决方案 > 如何获取存储在 android studio 的 firebase 实时数据库中的新密码

问题描述

我刚刚意识到,当我在我的应用程序中按下忘记密码并更改密码时,实时数据库中的密码不会更改。是否也可以更改实时数据库?这是我忘记密码的页面代码

public class ForgotPassword extends AppCompatActivity {
    
    EditText useremail;
    Button password;
    FirebaseAuth auth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_forgot_password);
        useremail=findViewById(R.id.enterEmailAddress);
        password=findViewById(R.id.sendpassword);
        auth=FirebaseAuth.getInstance();
        password.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                auth.sendPasswordResetEmail(useremail.getText().toString()).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if(task.isSuccessful()){
                            Toast.makeText(ForgotPassword.this,"Password sent to your mail",Toast.LENGTH_LONG).show();
                        }
                        else{
                            Toast.makeText(ForgotPassword.this,task.getException().getMessage(),Toast.LENGTH_LONG).show();
                        }
                    }
                });
            }
        });
    }
}

这是存储在我的数据库中的值

{
  "Users" : {
    "Driver" : {
      "S04QBZx3PxYaLfDWBC3j3otM5ml1" : {
        "mail" : "m.yusuf7423@gmail.com",
        "password" : "1234567",
        "username" : "YUSUF"
      }
    }
  }
}

标签: javaandroidfirebasefirebase-realtime-database

解决方案


Firebase 身份验证不会将用户凭据存储在 Firebase 数据库中。

如果用户凭据存储在数据库中,那是因为您的应用程序代码将其存储在那里。您需要通过运行与最初在数据库中保存凭据时运行的相同代码来更新数据库中的它。

例如,这样的事情可以更新密码:

FirebaseDatabase.getInstance().getReference("Users/Driver")
    .child(uid).child("password").setValue("new password");

注意:像您正在做的那样以明文形式存储用户的凭据是一个非常糟糕的主意,我强烈建议将其留给 Firebase 身份验证来为您安全地存储该数据。


推荐阅读