【问题标题】:The email address is badly formatted Firebase电子邮件地址格式错误 Firebase
【发布时间】:2017-02-01 13:24:09
【问题描述】:

嗨,我正在开发一个 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) {

            }
        });
    }
}

注册活动

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 给我以下错误。

【问题讨论】:

  • 错误信息是正确的。电子邮件地址的格式无效。所以很自然,我们需要知道用于提供线索的电子邮件地址。更好的mcve 将只是硬编码导致错误的实际值,并删除所有这些与您的问题无关的多余 UI 相关代码。

标签: android firebase firebase-authentication


【解决方案1】:

改变

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

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

【讨论】:

  • 欢迎来到 SO,每当您添加代码时,请将其括在 ` ... `
【解决方案2】:

帮助我解决此问题的是将android:id 放入正确的位置。 如果您使用的是 Material Design,那么您的文本输入有两个部分,布局和实际功能部分。 如果将ID放入布局中,则只能访问活动类中的editText属性,但如果将其放入功能部分,则可以访问.textgetText()就像上面有人说的那样。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      由于我使用“tab”转到下一个文本字段的愚蠢行为,我弹出了错误。不要使用“选项卡”,而是使用鼠标移动到下一个文本字段。为我工作。

      【讨论】:

        【解决方案5】:

        只需使用名为电子邮件和密码的 Edittext,您无需执行任何操作。 仅当您对两者都使用纯文本时才会出现错误...

        【讨论】:

          【解决方案6】:

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

          1. 检查 EditText 字段的 inputType。

          将此属性添加到您的 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();`
            

          【讨论】:

            【解决方案7】:

            您设置email 的代码不正确。您正在将email 设置为EditTextpassword 的值。

            在方法CheckLogin()中,更改:

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

            到:

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

            【讨论】:

            • 这是我的确切问题。格拉西亚斯。
            猜你喜欢
            • 2018-02-18
            • 2018-09-24
            • 2021-01-03
            • 2020-02-27
            • 1970-01-01
            • 2018-09-09
            • 2022-12-04
            • 1970-01-01
            • 2018-09-07
            相关资源
            最近更新 更多