Firebase auth завершает работу приложения с сообщением об ошибке: задача еще не выполнена - PullRequest
0 голосов
/ 04 мая 2020

Ниже приведен мой код, чтобы проверить, вошел ли пользователь в систему или нет

firebaseAuth = FirebaseAuth.getInstance();
currentUser = firebaseAuth.getCurrentUser();

Если у текущего пользователя есть какие-либо данные, я получаю Token

 if(currentUser != null){
   String token = currentUser.getIdToken(false).getResult().getToken();
}

, и здесь это происходит сбой, не всегда, в большинстве случаев со следующим сообщением об ошибке.

Method threw 'java.lang.IllegalStateException' exception.
Task is not yet complete 

Я использую точный код, который использует firebase в своей документации.

иногда также происходит сбой с тем же сообщением об ошибке, которым я поделился выше, при попытке войти в систему.

   firebaseAuth.signInAnonymously()
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {

                    if (task.isSuccessful()) {
                        FirebaseUser user = firebaseAuth.getCurrentUser();

                        if(user != null){

                            String userId = user.getUid();
                            String token = user.getIdToken(false).getResult().getToken();

                        }

                    } else {
                        Log.w("", "signInAnonymously:failure", task.getException());
                    }
                }
            });

1 Ответ

1 голос
/ 04 мая 2020

Вы пытаетесь получить доступ к результату напрямую. Я сталкивался с этой проблемой в прошлом, и я делал ту же ошибку. String token = currentUser.getIdToken (false) .getResult (). GetToken ();

Вместо этого вы можете попробовать использовать приведенный ниже код. Надеюсь, что это может помочь

user.getIdToken(true).addOnSuccessListener(new OnSuccessListener<GetTokenResult>() {
  @Override
   public void onSuccess(GetTokenResult result) {
     String idToken = result.getToken();
     //Do whatever
     Log.d(TAG, "GetTokenResult result = " + idToken);
  }
 });
...