2017-09-03 1 views
1

Ich kann mich nicht einloggen nach firebase.auth(). SignOut(). Wenn ich mich wieder melde, funktioniert es. Aber der Benutzer kann sich nicht anmelden. Was soll ich tun?Nach firebase.auth(). SignOut() wenn ich versuche mich erneut anzumelden, ohne mich anzumelden, funktioniert es nicht

LogOut:

private void logout() { 
    session.setLoggedin(false); 
    mAuth.signOut(); 
    Intent intent = new Intent(Main2Activity.this, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
} 

LogIn:

private void LogIn() { 
    mDatabase.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if (dataSnapshot.child("+880" + mobile).exists() && dataSnapshot.child("+880" + mobile).child("password").getValue().equals(userPassword)) { 
       Toast.makeText(MainActivity.this, "Password match", Toast.LENGTH_SHORT).show(); 
       Intent intent = new Intent(MainActivity.this, Main2Activity.class); 
       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
       session.setLoggedin(true); 
       startActivity(intent); 
      }else { 
       Toast.makeText(MainActivity.this, "User or Password doesn't match", Toast.LENGTH_SHORT).show(); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
} 

Antwort

1

Try Firebase-Authentifizierung zu verwenden, um Ihre Login-Methode zu behandeln. Die onDataChange-Methode unter dem addValueEventListener wird nur ausgelöst, wenn sich bestimmte Daten in Ihrer Firebase-Datenbank ändern. Wenn sich in Ihrer Datenbank nichts ändert, wird der Code in onDataChange nie ausgeführt.

Hier ist ein einfaches Beispiel dafür, wie Benutzer mit Firebase-Authentifizierung anmelden:

private void login(String email, String password) { 
    mAuth.signInWithEmailAndPassword(email, password) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        if(task.isSuccessful()) { 
         //If login is successful do something here 
        } else { 
         //If login is not successful do something here 
        } 
       } 
      }); 
}   

Stellen Sie sicher, dass Benutzer mit Firebase-Authentifizierung registrieren, wenn sie so registrieren Sie sie sich mit der Firebase-Authentifizierung anmelden können. Wie ich sehe, dass Sie Ihre Benutzer mit der Firebase-Authentifizierungsmethode abmelden, nehme ich an, dass Sie sie auch mit der Firebase-Authentifizierung angemeldet haben? Versuchen Sie daher, auf das Kennwort des Benutzers von Ihrer Authentifizierungsseite aus zuzugreifen, nicht von der Datenbank.

+0

Danke für Ihre Antwort. Ist es möglich, mit Telefon und Passwort zu unterzeichnen? Weil ich die Telefon-Authentifizierung verwendet habe. Im Moment habe ich ein Problem, angemeldete Benutzer anzumelden. –

+0

Ja, Sie können Ihre PhoneAuthCredential statt E-Mail und Passwort an Ihre Login-Methode übergeben. Anstelle von mAuth.signInWithEmailAndPassword sollten Sie auch mAuth.signInWithCredential verwenden, das einen Parameter Ihrer Anmeldeinformationen verwendet. Vergessen Sie nicht, dass Sie zuerst die Telefonnummern der Benutzer bestätigen müssen, bevor sie sich mit ihren Telefonnummern anmelden können. – Jessica

+0

Muss ich also die Variations-ID und den Code speichern? PhoneAuthCredential Credential = PhoneAuthProvider.getCredential (VerificationId, Code); Artikel https://firebase.google.com/docs/auth/android/phone-auth –

Verwandte Themen