Divakar R
Divakar R

Reputation: 845

The email address is badly formatted Firebase

hi i am working on a android project where i am using firebase as back-end and i am building a signup and login form . When ever i sign up the code is working well and . When i try to retrieve it using "signInWithEmailAndPassword i am getting the fallowing error. The email address is badly formatted Firebase`

login Activity

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);
                       }

                   }
               });

        }


    }
}

I have made sure that i have setup email and password active in the auth section of firebase.

still firebase giving me the following error.

Upvotes: 23

Views: 63168

Answers (10)

Mahmoud Niazy
Mahmoud Niazy

Reputation: 49

This solution helped me :)

createUserWithEmailAndPassword( email: email.toString().trim(), password: password, );

Upvotes: 1

Avela
Avela

Reputation: 1

you may write that mailAdress.toString() , you can change as

mailAdress.**text**.toString()

Upvotes: 0

smebes
smebes

Reputation: 467

Your code to set email is incorrect. Perhaps a space was used as the last letter.

  final User? user = (await _auth.signInWithEmailAndPassword(
    email: _emailController.text.toString().trim(),
    password: _passwordController.text,
  )).user;[![enter image description here][1]][1]

Upvotes: 0

Simon Fairio
Simon Fairio

Reputation: 1

Change

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

to

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

Upvotes: 0

Kreso
Kreso

Reputation: 73

What helped me resolve this issue is to put the android:id into the correct place. If you are using Material design, there are two parts of your text input, the layout and the actual functional part. If you put the ID into the layout, you'll only be able to access editText property in the activity class, but if you put it in the functional part, you'll be able to access .text or getText() as someone above has stated.

Upvotes: 0

saigopi.me
saigopi.me

Reputation: 14918

Remove whitespaces from email text it worked for me. by using trim() method you can remove spaces.

Upvotes: 2

Venkat Krishna
Venkat Krishna

Reputation: 11

The error popped for me due to my silly action of using "tab" to go to the next text field. Don't use "tab" for it, instead use your mouse to move to the next text field. Worked for me.

Upvotes: 1

Aniket Malik
Aniket Malik

Reputation: 335

Simply use Edittext named as Email and Password you need not do anything. the error comes up only if you use plaintext for both...

Upvotes: 3

Taha Ali
Taha Ali

Reputation: 487

I faced this problem recently, possible solutions are :

  1. Check the inputType of your EditText Field.

ADD this attribute to your EditText

            android:inputType="textEmailAddress"
  1. In Activity class, it should look like if u are using TextInputLayout instead of 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();`
    

Upvotes: 2

Bob Snyder
Bob Snyder

Reputation: 38299

Your code to set email is incorrect. You are setting email to the value of the EditText for password.

In method CheckLogin(), change:

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

to:

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

Upvotes: 32

Related Questions