# #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 Учетные данные пользователя>)’