Firebase 身份验证使应用程序崩溃并显示错误消息:任务尚未完成

dev*_*v90 0 android android-layout firebase firebase-authentication

以下是我的代码,用于检查用户是否已经登录。

firebaseAuth = FirebaseAuth.getInstance();
currentUser = firebaseAuth.getCurrentUser();
Run Code Online (Sandbox Code Playgroud)

如果当前用户有一些数据,我得到Token

 if(currentUser != null){
   String token = currentUser.getIdToken(false).getResult().getToken();
}
Run Code Online (Sandbox Code Playgroud)

在这里,它并不总是崩溃,大多数时候都会出现以下错误消息。

Method threw 'java.lang.IllegalStateException' exception.
Task is not yet complete 
Run Code Online (Sandbox Code Playgroud)

我使用的代码与 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());
                    }
                }
            });
Run Code Online (Sandbox Code Playgroud)

Min*_*hip 5

您正在尝试直接访问结果。我过去曾遇到过这个问题,并且犯了同样的错误。 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);
  }
 });
Run Code Online (Sandbox Code Playgroud)