2017-06-25 4 views
0

Firebase speichert die E-Mail und das Passwort.Registrierung und Anmeldung mit Firebase, Benutzername hinzufügen

Ich muss den Benutzernamen zur Registrierung hinzufügen.

Ich muss auch authentifizieren (Login) Benutzer mit Benutzername/Passwort nicht E-Mail/Passwort.

Registrierung hat Benutzername, E-Mail und Passwort soll ...

Während Einloggen mit Benutzername und Passwort sein soll.

RegisterActivity.java

public class RegisterActivity extends AppCompatActivity { 

private EditText inputEmail, inputPassword; 
private Button btnSignUp; 
private ProgressBar progressBar; 
private FirebaseAuth auth; 




@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_register); 

    auth = FirebaseAuth.getInstance(); 

    btnSignUp = (Button) findViewById(R.id.sign_up_button); 
    inputEmail = (EditText) findViewById(R.id.email); 
    inputPassword = (EditText) findViewById(R.id.password); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar); 


    btnSignUp.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      String email = inputEmail.getText().toString().trim(); 
      String password = inputPassword.getText().toString().trim(); 

      if (TextUtils.isEmpty(email)) { 
       Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show(); 
       return; 
      } 

      if (TextUtils.isEmpty(password)) { 
       Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show(); 
       return; 
      } 

      if (password.length() < 6) { 
       Toast.makeText(getApplicationContext(), "Password too short, enter minimum 6 characters!", Toast.LENGTH_SHORT).show(); 
       return; 
      } 

      progressBar.setVisibility(View.VISIBLE); 
      //create user 
      auth.createUserWithEmailAndPassword(email, password) 
        .addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() { 
         @Override 
         public void onComplete(@NonNull Task<AuthResult> task) { 
          progressBar.setVisibility(View.GONE); 
          // If sign in fails, display a message to the user. If sign in succeeds 
          // the auth state listener will be notified and logic to handle the 
          // signed in user can be handled in the listener. 
          if (!task.isSuccessful()) { 
           Toast.makeText(RegisterActivity.this, "Authentication failed." + task.getException(), 
             Toast.LENGTH_SHORT).show(); 
          } else { 
           startActivity(new Intent(RegisterActivity.this, WelcomeActivity.class)); 
           finish(); 
          } 
         } 
        }); 

     } 
    }); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    progressBar.setVisibility(View.GONE); 
} 

}

LoginActivity.java

public class LoginActivity extends AppCompatActivity { 

private EditText inputEmail, inputPassword; 
private FirebaseAuth auth; 
private ProgressBar progressBar; 
private Button btnLogin, btnReset; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //Get Firebase auth instance 
    auth = FirebaseAuth.getInstance(); 

    if (auth.getCurrentUser() != null) { 
     startActivity(new Intent(LoginActivity.this, WelcomeActivity.class)); 
     finish(); 
    } 

    setContentView(R.layout.activity_login); 

    inputEmail = (EditText) findViewById(R.id.login_email); 
    inputPassword = (EditText) findViewById(R.id.login_password); 
    progressBar = (ProgressBar) findViewById(R.id.login_progressBar); 
    btnLogin = (Button) findViewById(R.id.btn_login); 
    btnReset = (Button) findViewById(R.id.btn_reset_password); 

    //Get Firebase auth instance 
    auth = FirebaseAuth.getInstance(); 

    btnReset.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      resetPassword(); 
      //startActivity(new Intent(LoginActivity.this, ResetPasswordActivity.class)); 
     } 
    }); 

    btnLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String email = inputEmail.getText().toString(); 
      final String password = inputPassword.getText().toString(); 

      if (TextUtils.isEmpty(email)) { 
       Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show(); 
       return; 
      } 

      if (TextUtils.isEmpty(password)) { 
       Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show(); 
       return; 
      } 

      progressBar.setVisibility(View.VISIBLE); 

      //authenticate user 
      auth.signInWithEmailAndPassword(email, password) 
        .addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() { 
         @Override 
         public void onComplete(@NonNull Task<AuthResult> task) { 
          // If sign in fails, display a message to the user. If sign in succeeds 
          // the auth state listener will be notified and logic to handle the 
          // signed in user can be handled in the listener. 
          progressBar.setVisibility(View.GONE); 
          if (!task.isSuccessful()) { 
           // there was an error 
           if (password.length() < 6) { 
            inputPassword.setError(getString(R.string.minimum_password)); 
           } else { 
            Toast.makeText(LoginActivity.this, getString(R.string.auth_failed), Toast.LENGTH_LONG).show(); 
           } 
          } else { 
           Intent intent = new Intent(LoginActivity.this, WelcomeActivity.class); 
           startActivity(intent); 
           finish(); 
          } 
         } 
        }); 
     } 
    }); 

} 

Antwort

1

Sie können den Benutzernamen einer E-Mail zuordnen. Zum Beispiel, indem Sie eine Tabelle mit Benutzername und E-Mail in db erstellen. Wenn der Benutzer den Benutzernamen für die Anmeldung eingibt, holen Sie sich die entsprechende E-Mail und verwenden Sie sie, um eine einfache E-Mail-Passwort-Anmeldung durchzuführen.

Verwandte Themen