2017-05-02 13 views
0

누군가가 나를 도울 수 있기를 바랍니다. 아래 내 작성/등록 사용자에 대한 내 코드입니다. Android Studio와 Firebase를 사용하고 있습니다. 어떤 이유로 코드가 새 사용자를 만들지 않습니다. 수동으로 데이터베이스에 사용자를 추가 할 수 있지만 에뮬레이터를 실행하고 로그인을 테스트 할 때 새 사용자를 만들 수 없습니다. 프로그램이 progressDialog를 실행할 때 멈추게됩니다. progressDialog를 제거하면 응답이 없으므로 createUserWithEmailAndPassword()가 호출 될 때 프로그램이 멈추는 것으로 보입니다. Firebase 콘솔에서 전자 메일 및 암호 인증을 활성화했습니다. 나는 문제가 무엇인지 모르며 코딩에보다 숙련 된 사람으로부터 통찰력을 얻었습니다. 모두에게 미리 감사드립니다.Android Firebase이 새로운 사용자를 만들지 않습니다.

public class RegisterPage extends AppCompatActivity implements View.OnClickListener{ 

//declaration of views (variables) 
private Button btn_signup; 
private EditText txt_firstname; 
private EditText txt_lastname; 
private EditText txt_email_signup; 
private EditText txt_username; 
private EditText txt_password_signup; 
private EditText txt_passwordConfirm; 

private ProgressDialog progressDialog; 
private FirebaseAuth mAuth; 
FirebaseAuth.AuthStateListener mAuthStateListener; 


protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_register_page); 

    //initialization of view (assign id's) 
    progressDialog = new ProgressDialog(this); 
    btn_signup = (Button) findViewById(R.id.btn_signup); 
    txt_firstname = (EditText) findViewById(R.id.txt_firstname); 
    txt_lastname = (EditText) findViewById(R.id.txt_lastname); 
    txt_email_signup = (EditText) findViewById(R.id.txt_email_signup); 
    txt_username = (EditText) findViewById(R.id.txt_username); 
    txt_password_signup = (EditText) findViewById(R.id.txt_password_signup); 
    txt_passwordConfirm = (EditText)findViewById(R.id.txt_passwordConfirm); 

    //assign database instances 
    mAuth = FirebaseAuth.getInstance(); 
    mAuthStateListener = new FirebaseAuth.AuthStateListener(){ 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth){ 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if(user != null) { 
      } 
      else{ 
       startActivity(new Intent(RegisterPage.this, UserMainPage.class)); 
      } 
     } 
    }; 


    //set the listener for the click event 
    btn_signup.setOnClickListener(this); 

} 

//function to register user 
private void registerUser(){ 
    //get user input 
    String email = txt_email_signup.getText().toString().trim(); 
    String password = txt_password_signup.getText().toString().trim(); 
    String confirm = txt_passwordConfirm.getText().toString().trim(); 
    String firstname = txt_firstname.getText().toString().trim(); 
    String lastname = txt_lastname.getText().toString().trim(); 
    String username = txt_username.getText().toString().trim(); 

     //check if stings are empty using TextUtils 
     if(TextUtils.isEmpty(firstname)){ //email is empty 
      Toast.makeText(this, "Please enter firstname", Toast.LENGTH_SHORT).show(); 
      //stop further execution 
      return; 

     } 
     if(TextUtils.isEmpty(lastname)){ //email is empty 
      Toast.makeText(this, "Please enter lastname", Toast.LENGTH_SHORT).show(); 
      //stop further execution 
      return; 

     } 
     if(TextUtils.isEmpty(username)){ //email is empty 
      Toast.makeText(this, "Please enter a username", Toast.LENGTH_SHORT).show(); 
      //stop further execution 
      return; 

     } 
     if(TextUtils.isEmpty(email)){ //email is empty 
      Toast.makeText(this, "Please enter email", Toast.LENGTH_SHORT).show(); 
      //stop further execution 
      return; 

     } 
     if(TextUtils.isEmpty(password)){ //password is empty 
      Toast.makeText(this, "Please enter password", Toast.LENGTH_SHORT).show(); 
      //stop further execution 
      return; 
     } 
     if(!password.equals(confirm)){ 
      Toast.makeText(this, "Your passwords do not match", Toast.LENGTH_SHORT).show(); 
      //stop further execution 
      return; 
     } 


      //if validations are okay 
      //we will show a progressDialog as we create user account 
      progressDialog.setMessage("Creating account..."); 
      progressDialog.show(); 



    //register user in firebase database 
    mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 

          @Override 
         public void onComplete(@NonNull Task<AuthResult> task) { 
          progressDialog.dismiss(); 
           if (task.isSuccessful()){ 
           // user registered, start profile activity 
           Toast.makeText(RegisterPage.this,"Account Created",Toast.LENGTH_LONG).show(); 

           finish(); 
           startActivity(new Intent(getApplicationContext(), UserMainPage.class)); 
          } 
          else{ 
           Toast.makeText(RegisterPage.this,"Could not create account. Please try again",Toast.LENGTH_SHORT).show(); 
          } 
         } 
        }); 

} 


@Override 
public void onClick(View view){ 
    if(view == btn_signup){ 
     //if signup button clicked call function register user 
     registerUser(); 
    } 
} 


/* @Override 
    protected void onStart(){ 
    super.onStart(); 
    mAuth.addAuthStateListener(mAuthStateListener); 
    } 

@Override 
protected void onStop(){ 
    super.onStop(); 
    mAuth.removeAuthStateListener(mAuthStateListener); 
}*/ 
} 

답변

1

사용자를 전혀 만들지 않으므로 이러한 현상이 발생합니다. 따라서 onComplete 방법의 경우 Firebase 현재 사용자를 획득해야합니다.

mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
    @Override 
    public void onComplete(@NonNull Task<AuthResult> task) { 
     progressDialog.dismiss(); 
     if (task.isSuccessful()){ 
     FirebaseUser user = mAuth.getCurrentUser(); //You Firebase user 
     // user registered, start profile activity 
     Toast.makeText(RegisterPage.this,"Account Created",Toast.LENGTH_LONG).show(); 

     finish(); 
     startActivity(new Intent(getApplicationContext(), UserMainPage.class)); 
     } 
     else{ 
     Toast.makeText(RegisterPage.this,"Could not create account. Please try again",Toast.LENGTH_SHORT).show(); 
     } 
    } 
    }); 

는 희망이 도움이 : 그래서 if (task.isSuccessful()이 같은 사용자를 얻을.

+0

정말 고마워요. 이것은 코드가 필요한 수정 프로그램이었습니다. 이제 작동합니다. –

+0

도움을 청하게되어 기쁘다. 건배! –

+0

+1을 주시면 감사하겠습니다. 감사! –