电子邮件地址格式错误的Firebase

时间:2016-09-23 15:52:27

标签: android firebase firebase-authentication

嗨,我正在开发一个Android项目,我正在使用firebase作为后端,我正在构建一个注册和登录表单。当我注册时,代码运行良好。当我尝试使用" 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的auth部分中设置了电子邮件和密码。

仍然firebase给我以下错误。

7 个答案:

答案 0 :(得分:10)

您设置email的代码不正确。您将email设置为EditText的{​​{1}}值。

在方法password中,更改:

CheckLogin()

为:

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

答案 1 :(得分:1)

只需使用名为电子邮件和密码的Edittext,您无需执行任何操作。 只有当你同时使用明文时才出现错误...

答案 2 :(得分:1)

由于我愚蠢的使用“制表符”转到下一个文本字段的操作,错误对我突然出现。不要为此使用“制表符”,而应使用鼠标移至下一个文本字段。为我工作。

答案 3 :(得分:0)

我最近遇到了这个问题,可能的解决方案是:

  1. 检查EditText字段的inputType。
  2. 将此属性添加到EditText

                android:inputType="textEmailAddress"
    
    1. 在Activity类中,如果你使用的是TextInputLayout而不是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();`
      

答案 4 :(得分:0)

删除对我有用的电子邮件文本中的空格。通过使用trim()方法,您可以删除空格。

答案 5 :(得分:0)

帮助我解决这个问题的是将 android:id 放在正确的位置。 如果你使用 Material design,你的文本输入有两部分,布局和实际功能部分。 如果将 ID 放入布局中,您将只能访问活动类中的 editText 属性,但是如果将其放入功能部分,您将能够访问 .textgetText() 如上所述。

答案 6 :(得分:0)

改变

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

String password = mloginPassField.getText().toString().trim();
mAuth.signInWithEmailAndPassword(email,password)