2016-09-23 69 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
    相关问题