#java #android #firebase #firebase-realtime-database
#java #Android #firebase #firebase-база данных в реальном времени
Вопрос:
сначала я прошу прощения за мой плохой английский, у меня проблема с моим кодом, когда я хочу запросить и проверить, находится ли пользователь, который входит в систему, в базе данных или нет, а также проверить его пароль, и если он турист или гид, и когда я отлаживаю программу, первое утверждениепередается и вторая проверка пароля, он никогда не проходил и не запускал следующую страницу, в ней говорится, что пароль неверный, как я решаю эту проблему, пожалуйста: (
TextView show7, signup_btn_label;
ImageButton imagebuttonn1;
EditText tourg_email_address, tourg_password;
Button btnn_login;
private FirebaseAuth mAuth1;
private DatabaseReference jLoginDatabase;
private FirebaseDatabase fDatabase;
ProgressDialog mProgressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logintourguide);
//initialise mProgressDialog
mProgressDialog = new ProgressDialog(Logintourguide.this);
show7 = (TextView) findViewById(R.id.forgot_password);
show7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), Forgetpassword.class);
startActivity(i);
}
});
imagebuttonn1 = findViewById(R.id.imagebuttonn);
imagebuttonn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
signup_btn_label = (TextView) findViewById(R.id.signup_btn_label);
signup_btn_label.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), activity_signup_tourguide.class);
startActivity(i);
}
});
tourg_email_address = (EditText) findViewById(R.id.tourg_email_address);
tourg_password = (EditText) findViewById(R.id.tourg_password);
btnn_login = (Button) findViewById(R.id.btnn_login);
mAuth1 = FirebaseAuth.getInstance();
btnn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String emailPattern = "[a-zA-Z0-9._-] @[a-z] \. [a-z] ";
final String email = tourg_email_address.getText().toString().trim();
final String pass = tourg_password.getText().toString().trim();
if (TextUtils.isEmpty(email)) {
Toast.makeText(Logintourguide.this, "Please enter your email", Toast.LENGTH_LONG).show();
return;
}
if (TextUtils.isEmpty(pass)) {
Toast.makeText(Logintourguide.this, "Please enter your password", Toast.LENGTH_LONG).show();
return;
}
if (tourg_password.length() < 8) {
Toast.makeText(Logintourguide.this, "password must be 8 or long", Toast.LENGTH_LONG).show();
return;
}
if (!email.matches(emailPattern)) {
Toast.makeText(Logintourguide.this, "invalid email address", Toast.LENGTH_LONG).show();
return;
}
//show dialog
mProgressDialog.show();
//set content view
mProgressDialog.setContentView(R.layout.progress_dialog);
//set transparent background
mProgressDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
///FirebaseDatabase database = FirebaseDatabase.getInstance();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
final String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
// DatabaseReference rootRef = FirebaseDatabase.getInstance()
final DatabaseReference uidRef = FirebaseDatabase.getInstance().getReference("Users");
final Query checkUser = uidRef.orderByChild("email").equalTo(email);
checkUser.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
if (pass.equals(dataSnapshot.child("password").getValue())) {
if (dataSnapshot.child("sign up as").getValue().equals("Tour Guide")) {
String passwordfromDB = (String) dataSnapshot.child("password").getValue(String.class);
String emailfromDB = (String) dataSnapshot.child("email").getValue(String.class);
String fullNamefromDB = (String) dataSnapshot.child("fullName").getValue(String.class);
String phoneNumberfromDB = (String) dataSnapshot.child("phoneNumber").getValue(String.class);
//put it iin that intent so we can pass it to tourguide class
Intent intent = new Intent(getApplicationContext(), TourGuide_Profile.class);
intent.putExtra("full name", fullNamefromDB);
intent.putExtra("email", emailfromDB);
intent.putExtra("phone No", phoneNumberfromDB);
intent.putExtra("password", passwordfromDB);
mProgressDialog.dismiss();
Toast.makeText(Logintourguide.this, "welcome back tour guide!",
Toast.LENGTH_SHORT).show();
startActivity(intent);
} else {
mProgressDialog.dismiss();
Toast.makeText(Logintourguide.this, "Sorry ! You are not authorized to access this application!",
Toast.LENGTH_SHORT).show();
}
} else {
mProgressDialog.dismiss();
Toast.makeText(Logintourguide.this, "wrong password",
Toast.LENGTH_SHORT).show();
}
} else {
mProgressDialog.dismiss();
Toast.makeText(Logintourguide.this, "no such user exist !",
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("Tag", databaseError.getMessage());
}
});
// uidRef.addListenerForSingleValueEvent(valueEventListener);
// checkUser.addListenerForSingleValueEvent(valueEventListener);
}
});
}
Комментарии:
1. Вы проверяли, получаете ли вы какое-либо значение в datasnapshot?
2. извините, но я не знаю, как это сделать, можете ли вы объяснить подробнее:(?