2016-10-24 16 views
-1

私はAndroidスタジオとFirebaseを初めて使用しています。いくつかのオンラインチュートリアルを見て、私はログインページのコードを書いた。誰も私のためにそれをデバッグしてくださいできますか?Firebase認証エラー

私のログインボタンは、アプリの名前はリドラー

package in.mihiljose.riddler; 

import android.app.ProgressDialog; 
import android.support.annotation.NonNull; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.text.TextUtils; 
import android.view.KeyEvent; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 
import com.google.android.gms.common.SignInButton; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.tasks.OnCompleteListener; 
import com.google.android.gms.tasks.Task; 
import com.google.firebase.auth.AuthResult; 
import com.google.firebase.auth.FirebaseAuth; 


public class LoginSignUp extends AppCompatActivity { 

    private EditText mEmailField; 
    private EditText mPasswordField; 
    private ImageView mLoginBtn; 

    private FirebaseAuth mAuth; 
    private FirebaseAuth.AuthStateListener mAuthListner; 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login_sign_up); 

     mEmailField = (EditText)findViewById(R.id.emailField); 
     mPasswordField = (EditText)findViewById(R.id.passwordField); 
     mLoginBtn = (Button) findViewById(R.id.loginBtn); 

     mAuthListner = new FirebaseAuth.AuthStateListener() { 
      @Override 
      public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 

       if (firebaseAuth.getCurrentUser()!=null){ 

        startActivity(new LoginSignUp().this,MainActivity.class); 
       } 

       } 
      }; 
     } 

     mLoginBtn.setOnClickListener(new View.OnClickListener()) { 
      @Override 
      public void onClick(View view) { 

       startSignIn(); 

      } 
     }); 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     mAuth.addAuthStateListener(mAuthListner); 
    } 
} 


    private void startSignIn(){ 

     String email = mEmailField.getText().toString(); 
     String password = mPasswordField.getText().toString(); 

     if (TextUtils.isEmpty(email)||TextUtils.isEmpty(password)){ 

      Toast.makeText(LoginSignUp.this,"Empty Fields !!",Toast.LENGTH_LONG).show(); 
     }else { 
     mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
      @Override 
      public void onComplete(@NonNull Task<AuthResult> task) { 

       if (!task.isSuccessful()) { 

        Toast.makeText(LoginSignUp.this,"Sign in Problem",Toast.LENGTH_LONG).show(); 
       } 
      } 
     }) 


    } 



} 
+0

ログインする前に「createUserWithEmailAndPassword」(サインイン)と呼ばれましたか? –

答えて

0

ログイン活動のため、このサンプルコードを探しているイメージ図

であることに注意してください:(あなたは「createUserWithEmailAndPassword」を使用してサインインを行っていることを確認ログインする前に)

public class LoginActivity extends AppCompatActivity { 

    private EditText inputEmail, inputPassword; 
    private FirebaseAuth auth; 
    private FirebaseAuth.AuthStateListener authStateListener; 
    private ProgressBar progressBar; 
    private Button btnSignup, btnLogin, btnReset; 
    private SignInButton btn_google_login; 
    private LoginButton btn_facebook_login; 

    private static final int RC_SIGN_IN = 9001; 

    private AuthCredential mCredential; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //Get Firebase auth instance 
     auth = FirebaseAuth.getInstance(); 

     if (auth.getCurrentUser() != null) { 
      startActivity(new Intent(LoginActivity.this, MainActivity.class)); 
      finish(); 
     } 

     // set the view now 
     setContentView(R.layout.activity_login); 


     inputEmail = (EditText) findViewById(R.id.email); 
     inputPassword = (EditText) findViewById(R.id.password); 

     //Get Firebase auth instance 
     auth = FirebaseAuth.getInstance(); 
     authStateListener = new FirebaseAuth.AuthStateListener() { 
      @Override 
      public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
       FirebaseUser user = firebaseAuth.getCurrentUser(); 
       if (user != null) { 
        // User is signed in 
        Log.d("LoginActivity", "onAuthStateChanged:signed_in:" + user.getUid()); 
       } else { 
        // User is signed out 
        Log.d("LoginActivity", "onAuthStateChanged:signed_out"); 
       } 
      } 
     }; 



     btnLogin.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       final String email = inputEmail.getText().toString(); 
       final String password = inputPassword.getText().toString(); 

       if (TextUtils.isEmpty(email)) { 
        Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show(); 
        return; 
       } 

       if (TextUtils.isEmpty(password)) { 
        Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show(); 
        return; 
       } 

       progressBar.setVisibility(View.VISIBLE); 

       //authenticate user 
       auth.signInWithEmailAndPassword(email, password) 
         .addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() { 
          @Override 
          public void onComplete(@NonNull Task<AuthResult> task) { 
           // If sign in fails, display a message to the user. If sign in succeeds 
           // the auth state listener will be notified and logic to handle the 
           // signed in user can be handled in the listener. 
           progressBar.setVisibility(View.GONE); 
           if (!task.isSuccessful()) { 
            // there was an error 
            if (password.length() < 6) { 
             inputPassword.setError(getString(R.string.minimum_password)); 
            } else { 
             Toast.makeText(LoginActivity.this, getString(R.string.auth_failed), Toast.LENGTH_LONG).show(); 
            } 
           } else { 
            Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
            startActivity(intent); 
            mCredential = EmailAuthProvider.getCredential(email, password); 
            finish(); 
           } 
          } 
         }); 
      } 
     }); 



    } 


    @Override 
    public void onStart() { 
     super.onStart(); 
     auth.addAuthStateListener(authStateListener); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     if (authStateListener != null) { 
      auth.removeAuthStateListener(authStateListener); 
     } 
    } 

    @Override 
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 

    } 

    private void SignOut() { 
     //Firebase sign out 
     if (auth.getCurrentUser() != null) { 
      auth.signOut(); 
      Log.i("LoginActivity","Firebase logout successfully"); 
     } 

     //Facebook SignOut 
     LoginManager.getInstance().logOut(); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     Log.i("LoginActivity","onDestroy"); 
     SignOut(); 
    } 
} 
+0

私はちょうどあなたのコードを貼り付けて、次のエラーを受け取りました: –

+0

クラスログイン活動は公開されている、ファイル名で宣言する必要がありますLoginActivity.java シンボルクラスを見つけることができませんCallbackManager –

+0

使用されていない宣言された変数を削除します。 CallbackManager&googleApiClientは使用されません。私はコードを更新しました。チェックしてください –