Не удается разрешить ожидаемое выражение пользователя (Firebase)

# #android #firebase #firebase-authentication

Вопрос:

Просто пытаюсь выполнить аутентификацию по телефону в соответствии с учебником, который я смотрю, в котором я записал код, как показано ниже, но я продолжаю получать ожидаемое выражение ошибки для «Пользователя» — я совершенно новичок в этом, поэтому я представляю, что это что-то простое, тем не менее, мне нужна помощь! Заранее благодарю вас!

 mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
    @Override
    public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
        signInWithPhoneAuthCredential(phoneAuthCredential);


    }

    private void signInWithPhoneAuthCredential(PhoneAuthCredential phoneAuthCredential) {
        FirebaseAuth.getInstance().signInWithCredential(phoneAuthCredential).addOnCompleteListener(this, new OnCompleteListener<Credential.UserCredential>() {
            @Override
            public void onComplete(@NonNull Task<Credential.UserCredential> task) {
                if(task.isSuccessful())
                    userIsLoggedIn();

            }

            private void userIsLoggedIn() {
                User = FirebaseAuth.getInstance().getCurrentUser();
                if(User != null){
                    startActivity(new Intent(getApplicationContext(), MainPageActivity.class));
                    finish();
                    return;
 

Комментарии:

1. Переменная User никогда не была определена.

2. Как определяется User объект? Пожалуйста, ответьте @AlexMamo

Ответ №1:

У вас есть класс с именем "User" , и вы не определили здесь его переменную, которая показывает ошибку выражения java . На самом деле вы ищете пользователя Firebase , у FirebaseAuth есть класс FirebaseUser . Поэтому он должен быть ниже кода для проверки текущего пользователя .

 FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                if(user != null){.....
 

Обновление (причина новой ошибки) — Вы реализуете PhoneAuthCredential , но передаете имя пользователя-пароль на основе Credential.UserCredential и применяете неправильный метод.

Ваша signInWithPhoneAuthCredential пустота была бы —

 private void signInWithPhoneAuthCredential(PhoneAuthCredential phoneAuthCredential) {
FirebaseAuth.getInstance().signInWithCredential(phoneAuthCredential).addOnCompleteListener(this , new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
        if (task.isSuccessful()) {
            userIsLoggedIn();
        } else {
            //
        }
    }
});
}
 

И ваш прикрепленный код будет —

   mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
        @Override
        public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
            signInWithPhoneAuthCredential(phoneAuthCredential);
        }

        @Override
        public void onVerificationFailed(@NonNull FirebaseException e) {
            //TODO
        }

        @Override
        public void onCodeSent(@NonNull String s, @NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) {
            super.onCodeSent(s, forceResendingToken);

            //TODO

        }
    };
}


private void signInWithPhoneAuthCredential(PhoneAuthCredential phoneAuthCredential) {
    FirebaseAuth.getInstance().signInWithCredential(phoneAuthCredential).addOnCompleteListener(this , new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
                userIsLoggedIn();
            } else {
                //
            }
        }
    });
}

private void userIsLoggedIn() {
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    if (user != null) {
        startActivity(new Intent(getApplicationContext(), MainPageActivity.class));
        finish();
        //  return;
    }
}
 

Пожалуйста, ознакомьтесь с документацией.

Комментарии:

1. если я это сделаю, я получу ошибку: Не удается разрешить метод » addOnCompleteListener(анонимный com.google. огневая база.авт. Телефонный провайдер. onverificationстатьизмененные обратные вызовы, анонимные задачи com.google.android.gms. OnCompleteListener Учетные данные пользователя>)’