2016-09-23 49 views
1

您好我正在使用Firebase作爲後端的Android項目,我正在構建註冊和登錄窗體。當我註冊時,代碼運行良好。當我嘗試找回它使用「signInWithEmailAndPassword我得到休耕錯誤。的電子郵件地址格式錯誤火力地堡`電子郵件地址格式不正確Firebase

登錄活動

public class LoginActivity extends AppCompatActivity { 

    private EditText mLoginEmailField; 
    private EditText mloginPassField; 

    private Button mLoginbtn; 
    private Button mNewAccountbtn; 

    private DatabaseReference mDatabaseRefrence; 





    private FirebaseAuth mAuth; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 



     mAuth = FirebaseAuth.getInstance(); 
     mLoginEmailField = (EditText) findViewById(R.id.loginEmailField); 
     mloginPassField = (EditText) findViewById(R.id.loginPasswordField); 

     mLoginbtn = (Button) findViewById(R.id.loginBtn); 
     mNewAccountbtn = (Button) findViewById(R.id.newAccountbtn); 
     mDatabaseRefrence = FirebaseDatabase.getInstance().getReference().child("Users"); 


     mNewAccountbtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent rigisterIntent = new Intent(LoginActivity.this,RigisterActivity.class); 
       rigisterIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(rigisterIntent); 
      } 
     }); 


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

       CheckLogin(); 
      } 
     }); 
    } 

    private void CheckLogin() { 

     String email = mloginPassField.getText().toString().trim(); 
     String pass = mloginPassField.getText().toString().trim(); 


     if(!TextUtils.isEmpty(email) && !TextUtils.isEmpty(pass)){ 


      mAuth.signInWithEmailAndPassword(email,pass).addOnCompleteListener(this,new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        if(task.isSuccessful()){ 
         CheackUserExsists(); 
        }else{ 
         System.out.println("Sign-in Failed: " + task.getException().getMessage()); 
         Toast.makeText(LoginActivity.this,"Erorr Login",Toast.LENGTH_LONG).show(); 
        } 
       } 
      }); 

     } 

    } 

    private void CheackUserExsists() { 

    final String user_id = mAuth.getCurrentUser().getUid(); 
     mDatabaseRefrence.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       if(dataSnapshot.hasChild(user_id)){ 

        Intent MainIntent = new Intent(LoginActivity.this,MainActivity.class); 
        MainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(MainIntent); 
       }else 
       { 

        Toast.makeText(LoginActivity.this,"You need to setup your Account.. ",Toast.LENGTH_LONG).show(); 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 
    } 
} 

Rigister Actvity

public class RigisterActivity extends AppCompatActivity { 

    private EditText mNameField; 
    private EditText mPassField; 
    private EditText mEmailField; 

    private Button mRigisterbtn; 

    private ProgressDialog mProgres; 

    private DatabaseReference mDatabase; 


    private FirebaseAuth mAuth; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_rigister); 

     mDatabase = FirebaseDatabase.getInstance().getReference().child("Users"); 

     mAuth = FirebaseAuth.getInstance(); 

     mProgres = new ProgressDialog(this); 

     mNameField = (EditText) findViewById(R.id.nameField); 
     mPassField = (EditText) findViewById(R.id.passFiled); 
     mEmailField = (EditText) findViewById(R.id.emailField); 

     mRigisterbtn = (Button) findViewById(R.id.rigisterbtn); 

     mRigisterbtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       StartRigister(); 
      } 
     }); 

    } 

    private void StartRigister() { 

     final String name = mNameField.getText().toString().trim(); 
     String pass = mPassField.getText().toString().trim(); 
     String email = mEmailField.getText().toString().trim(); 

     if(!TextUtils.isEmpty(name) && !TextUtils.isEmpty(pass) && !TextUtils.isEmpty(email)){ 

      mProgres.setMessage("Signing Up... "); 
      mProgres.show(); 

       mAuth.createUserWithEmailAndPassword(email,pass).addOnCompleteListener(this,new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 

         if(task.isSuccessful()){ 
         String user_id = mAuth.getCurrentUser().getUid(); 
          DatabaseReference CurentUser_db = mDatabase.child(user_id); 
          CurentUser_db.child("name").setValue(name); 
          CurentUser_db.child("image").setValue("defalut"); 
         mProgres.dismiss(); 
          Intent mainIntent = new Intent(RigisterActivity.this, MainActivity.class); 
          mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
          startActivity(mainIntent); 
         } 

        } 
       }); 

     } 


    } 
} 

我有確保我已經設置了電子郵件地址和密碼,並在激活碼的驗證部分中激活。

仍然firebase給我下面的錯誤。

+1

錯誤消息是正確的。電子郵件地址的格式無效。所以,我們需要知道被用來提供線索原因的電子郵件地址。一個更好的[mcve](http://stackoverflow.com/help/mcve)就是硬編碼導致錯誤的實際值,並刪除所有與您的問題無關的多餘的與UI相關的代碼。 – Kato

回答

5

您的代碼設置爲email不正確。您將email設置爲passwordEditText的值。

在方法CheckLogin(),變化:

String email = mloginPassField.getText().toString().trim(); 

到:

String email = mLoginEmailField .getText().toString().trim(); 
+0

非常感謝你解決了我的問題。 –

0

我最近遇到這個問題,可能的解決方案是:

  1. 檢查您的EditText場的inputType。

加入該屬性到您的EditText

  android:inputType="textEmailAddress" 
  • 在Activity類,它應該看起來像如果u是使用代替EDITTEXT

     mDisplayName=(TextInputLayout) findViewById(R.id.reg_name); 
         mDisplayEmail=(TextInputLayout)findViewById(R.id.reg_email); 
         mDisplayPassword=(TextInputLayout)findViewById(R.id.reg_password); 
    
    
         String name = mDisplayName.getEditText().getText().toString(); 
         String email = mDisplayEmail.getEditText().getText().toString(); 
         String password = mDisplayPassword.getEditText().getText().toString();` 
    
  • TextInputLayout
    相關問題