[英]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
設置為password
的EditText
值。
在方法CheckLogin()
,更改:
String email = mloginPassField.getText().toString().trim();
到:
String email = mLoginEmailField .getText().toString().trim();
只需使用名為“電子郵件”和“密碼”的 Edittext,您無需執行任何操作。 只有當您對兩者都使用純文本時才會出現錯誤......
我最近遇到了這個問題,可能的解決方案是:
將此屬性添加到您的 EditText
android:inputType="textEmailAddress"
在 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
屬性,但如果您將其放入功能部分,您將能夠像上面的人一樣訪問.text
或getText()
已經表示。
改變
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.