簡體   English   中英

email 地址格式錯誤 Firebase

[英]The email address is badly formatted Firebase

嗨,我正在做一個 android 項目,我正在使用 firebase 作為后端,我正在構建一個注冊和登錄表單。 當我注冊時,代碼運行良好並且。 當我嘗試使用“ signInWithEmailAndPassword檢索它時,我收到了錯誤。email 地址格式錯誤 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 部分設置了 email 和密碼。

仍然 firebase 給我以下錯誤。

您設置email代碼不正確。 您正在將email設置為passwordEditText值。

在方法CheckLogin() ,更改:

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

到:

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

只需使用名為“電子郵件”和“密碼”的 Edittext,您無需執行任何操作。 只有當您對兩者都使用純文本時才會出現錯誤......

我最近遇到了這個問題,可能的解決方案是:

  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();`

由於我使用“tab”轉到下一個文本字段的愚蠢操作,錯誤為我彈出。 不要使用“tab”,而是使用鼠標移動到下一個文本字段。 為我工作。

從對我有用的電子郵件文本中刪除空格 通過使用trim()方法,您可以刪除空格。

幫助我解決這個問題的是將android:id放在正確的位置。 如果你使用 Material design,你的文本輸入有兩部分,布局和實際功能部分。 如果您將 ID 放入布局中,您將只能訪問活動類中的editText屬性,但如果您將其放入功能部分,您將能夠像上面的人一樣訪問.textgetText()已經表示。

改變

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

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

您設置 email 的代碼不正確。 也許一個空格被用作最后一個字母。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM