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

sshcrbum  于 2023-03-13  发布在  其他
关注(0)|答案(9)|浏览(213)

你好,我正在做一个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给我以下错误。

6tqwzwtp

6tqwzwtp1#

设置email的代码不正确。您将email设置为passwordEditText值。
在方法CheckLogin()中,更改:

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

致:

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

7eumitmz2#

只需使用命名为电子邮件和密码的编辑文本,您不需要做任何事情。错误出现只有当您使用纯文本的两个...

hts6caw3

hts6caw33#

我最近遇到了这个问题,可能的解决办法是:
1.检查编辑文本字段的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();`
5w9g7ksd

5w9g7ksd4#

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

vatpfxk5

vatpfxk55#

这个错误是因为我用“tab”键转到下一个文本字段的愚蠢行为而弹出的。不要用“tab”键,而是用鼠标移动到下一个文本字段。对我来说很有效。

laik7k3q

laik7k3q6#

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

7cwmlq89

7cwmlq897#

变更

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

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

j0pj023g8#

设置电子邮件的代码不正确。可能最后一个字母使用了空格。

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

qmb5sa229#

你可以写“mailAddress.toString()“,也可以改成“mailAddress.文本.toString()”

相关问题