Аутентификация Firebase продолжает давать com.google.firebase.auth.FirebaseAuth.getCurrentUser () 'для ссылки на пустой объект - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь внедрить проверку подлинности Firebase для приложения для Android и получаю сообщение об ошибке.Я новичок в Android и, в лучшем случае, новичок в Java, поэтому я уверен, что мне не хватает чего-то простого.Любые предложения / советы очень ценятся!

Вот моя база кода:

public class LoginActivity extends AppCompatActivity {

    private static final String TAG = "LoginActivity";

    //Firebase
    private FirebaseAuth mAuth;

    private Context mContext;
    private ProgressBar mProgressBar;
    private EditText mEmail, mPassword;
    private TextView mPleaseWait;


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
        mPleaseWait = (TextView) findViewById(R.id.pleaseWait);
        mEmail = (EditText)findViewById(R.id.input_email);
        mPassword = (EditText) findViewById(R.id.input_password);
        mContext = LoginActivity.this;

        Log.d(TAG, "onCreate: Login started.");
        mPleaseWait.setVisibility(View.GONE);
        mProgressBar.setVisibility(View.GONE);
    }

    private boolean isStringNull(String string){
        Log.d(TAG, "isStringNull: checking if null.");

        if(string.equals("")){
            return true;
        }else {
            return false;
        }
    }

    /**
     * FireBase Code
     *
     */
    private void init(){

        //initialize the button for logging in
        Button btnLogin = (Button) findViewById(R.id.btn_login);
        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d(TAG, "onClick: attempting to login. ");

                String email = mEmail.getText().toString();
                String password = mPassword.getText().toString();

                if (isStringNull(email) && isStringNull(password)){
                    Toast.makeText(mContext, "You must fill out all fields.", Toast.LENGTH_SHORT).show();
                }else{
                    mProgressBar.setVisibility(View.VISIBLE);
                    mPleaseWait.setVisibility(View.VISIBLE);

                    mAuth.signInWithEmailAndPassword(email, password)
                            .addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() {
                                @Override
                                public void onComplete(@NonNull Task<AuthResult> task) {
                                    if (task.isSuccessful()) {
                                        // Sign in success, update UI with the signed-in user's information
                                        Log.d(TAG, "signInWithEmail:success");

                                        FirebaseUser currentUser = mAuth.getCurrentUser();
                                        updateUI(currentUser);
                                    } else {
                                        // If sign in fails, display a message to the user.
                                        Log.w(TAG, "signInWithEmail:failure", task.getException());

                                        Toast.makeText(LoginActivity.this, "Authentication failed.",
                                                Toast.LENGTH_SHORT).show();
                                        updateUI(null);
                                    }

                                }
                            });
                }

            }
        });
    }
     /**
      * Checks to see if the @param 'user' is logged in.
      */
    private void updateUI(FirebaseUser currentUser) {
        Log.d(TAG, "updateUI: checking if user is logged in.");

        if(currentUser == null){
            Intent intent = new Intent(mContext, LoginActivity.class);
            startActivity(intent);
        }
    }

    @Override
    public void onStart() {
        Log.d(TAG, "onStart: Starting LoginActivity onStart method.");
        super.onStart();

        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);

        if(currentUser != null){
            Log.d(TAG, "onStart:signed_in. " + currentUser);
        }else{
            Log.d(TAG, "onStart:signed_out. ");
        }
    }
}

Когда я запускаю код, я получаю следующее сообщение об ошибке:

D / LoginActivity: onCreate: вход в систему начался.onStart: запуск метода onStart для входа в систему.D / AndroidRuntime: завершение работы виртуальной машины ....... java.lang.NullPointerException: попытка вызвать виртуальный метод com.google.firebase.auth.FirebaseUser com.google.firebase.auth.FirebaseAuth.getCurrentUser () 'onнулевая ссылка на объект

1 Ответ

0 голосов
/ 24 сентября 2019

В сообщении об ошибке указывается, что mAuth является нулевым значением по умолчанию.Вы, вероятно, никогда не присваивали ему значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...