java - 如何获取存储在 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"
}
}
}
}
解决方案
Firebase 身份验证不会将用户凭据存储在 Firebase 数据库中。
如果用户凭据存储在数据库中,那是因为您的应用程序代码将其存储在那里。您需要通过运行与最初在数据库中保存凭据时运行的相同代码来更新数据库中的它。
例如,这样的事情可以更新密码:
FirebaseDatabase.getInstance().getReference("Users/Driver")
.child(uid).child("password").setValue("new password");
注意:像您正在做的那样以明文形式存储用户的凭据是一个非常糟糕的主意,我强烈建议将其留给 Firebase 身份验证来为您安全地存储该数据。
推荐阅读
- sqlite - 有没有办法使用 FireDAC 将 Null 值作为参数插入?
- haskell - haskell 中的底部(即_|_)是什么?
- python - 以 root 身份登录时,Python-Sounddevice PortAudio 不显示任何设备
- python-3.x - PJSUA 转移调用在 python37 中不起作用如何在 python27 中起作用
- c++ - 使用boost精神qi处理gor解析bnf语法的多行规则
- visual-studio-code - 在 WSL-2 中运行的 Ubuntu 20.04 LTS 上使用 VSCode 调试 Deno 时出现问题:--inspect-brk 被删除
- c# - 如何在 C# 应用程序中在运行时加载 DLL,调用方法,然后卸载它?
- java - 如何使用 Firebase 发送带有确认码的短信?
- reactjs - React - 如何将 Google Places API 结果动态限制在特定国家/地区
- javascript - 基于Javascript中的节点号将平面列表数组转换为树视图数组