Java 如何将Firebase数据与登录验证屏幕输入进行比较。安卓
因此,我正在创建登录功能,我需要将我存储在Firebase中的数据与我在登录屏幕中提供的输入进行比较,这样,如果用户在系统中注册,就可以登录,现在它只为“Customer”中的第一个特定子代工作但我需要它与所有人一起工作,这样当我添加其他用户时,它也可以识别他们。它应该与数据库中的这3个字段(电子邮件、密码、活动)进行比较 [数据库]Java 如何将Firebase数据与登录验证屏幕输入进行比较。安卓,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,因此,我正在创建登录功能,我需要将我存储在Firebase中的数据与我在登录屏幕中提供的输入进行比较,这样,如果用户在系统中注册,就可以登录,现在它只为“Customer”中的第一个特定子代工作但我需要它与所有人一起工作,这样当我添加其他用户时,它也可以识别他们。它应该与数据库中的这3个字段(电子邮件、密码、活动)进行比较 [数据库] 我会反过来做 一,。让用户使用Firebase身份验证登录方法登录 二,。使用`userid=mAuth.getCurrentUserId()` 三,。在数据库中
我会反过来做 一,。让用户使用Firebase身份验证登录方法登录 二,。使用`userid=mAuth.getCurrentUserId()` 三,。在数据库中使用此用户ID检查用户是否处于“活动”状态,如果用户未自动注销并在UI上抛出错误
这意味着在数据库中,userdata将位于
mDatabase=FirebaseDatabase.getInstance().getReference().child(“客户”).child(userId)代码>更新。我通过添加查询和创建新方法解决了这个问题
public class LoginScreen extends AppCompatActivity {
private FirebaseAuth mAuth;
private DatabaseReference mDatabase;
EditText email;
EditText password;
String username, pass, isActivate;
@Override
protected void onCreate(Bundle savedInstanceState) {
mAuth = FirebaseAuth.getInstance();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_screen);
email = findViewById(R.id.email_signin);
password = findViewById(R.id.passwordSignin);
mDatabase= FirebaseDatabase.getInstance().getReference().child("Customer").child("1");
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
username = dataSnapshot.child("email").getValue().toString();
pass = dataSnapshot.child("password").getValue().toString();
isActivate = dataSnapshot.child("active").getValue().toString();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
public void backClick(View view) {
super.onBackPressed();
}
public void signIn(View view) {
if(allowedToSignin()){
Intent intent = new Intent(this, CustomerScreen.class);
startActivity(intent);
}
else {
Toast.makeText(LoginScreen.this,"Login failed!", Toast.LENGTH_LONG).show();
}
}
public boolean allowedToSignin(){
boolean signinAllowed = true;
if(email.getText().toString().equals(username) && isActivate.equals("true")){
email.setError(null);
}else {
email.setError("enter a valid email");
signinAllowed = false;
}
if (password.getText().toString().equals(pass)){
password.setError(null);
}else {
password.setError("enter a valid password");
signinAllowed = false;
}
return signinAllowed;
}
}```
[1]: https://i.stack.imgur.com/QvOla.png