2016-09-23 12 views
1

こんにちは私は、firebaseをバックエンドとして使用しているアンドロイドプロジェクトに取り組んでいます。サインアップとログインフォームを作成しています。これまでにサインアップすると、コードはうまく動作しています。私はそれは私が休閑エラーを取得しています」signInWithEmailAndPasswordを使用して取得しようとするとき。をメールアドレスがひどくFirebaseフォーマットされ `電子メールアドレスの形式が古くなっています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) { 

      } 
     }); 
    } 
} 

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

        } 
       }); 

     } 


    } 
} 

私が持っていますfirebaseの認証セクションに電子メールとパスワードが設定されていることを確認しました。

まだ私に次のエラーを出すfirebase。

+1

エラーメッセージは正しいです。電子メールアドレスの形式が無効です。だから自然に、私たちはなぜか手がかりを提供するために使用されている電子メールアドレスを知る必要があります。より良い[mcve](http://stackoverflow.com/help/mcve)は、エラーの原因となる実際の値をハードコードするだけで、問題に関連していないこのような余分なUI関連のコードを取り除くことになります。 – Kato

答えて

5

emailを設定するコードが正しくありません。 emailpasswordEditTextの値に設定しています。方法CheckLogin()

、変更:

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

へ:

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

私の問題を解決してくれてありがとう。 –

0

私は最近、この問題に直面し、可能な解決策は以下のとおりです。

  1. あなたのEditTextフィールドのinputTypeを確認してください。

<オール開始= "2">あなたのEditText

  android:inputType="textEmailAddress" 
にこの属性を追加Activityクラスで
  • uは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();` 
    
  • をTextInputLayoutを使用して代わりにしている場合、それは次のようになります。
    関連する問題