Skip to content

Fix IllegalStateException: Task is not yet complete in signInWithCustomToken method #60

@ishroid

Description

@ishroid

Bug Description

The signInWithCustomToken method in FirebaseAuth.kt throws an IllegalStateException: Task is not yet complete error when trying to authenticate users with custom tokens.

Error Details

Error Message:
ava.lang.IllegalStateException: Task is not yet complete
at com.google.android.gms.common.internal.Preconditions.checkState(com.google.android.gms:play-services-basement@@18.1.0:2)
at com.google.android.gms.tasks.zzw.zzf(com.google.android.gms:play-services-tasks@@18.0.2:1)
at com.google.android.gms.tasks.zzw.getResult(com.google.android.gms:play-services-tasks@@18.0.2:1)
at com.google.firebase.auth.FirebaseAuth.signInWithCustomToken(FirebaseAuth.kt:375)
To:
Impact
This bug prevents users from successfully authenticating with custom tokens in desktop/JVM environments, breaking the authentication flow for applications using this Firebase Java SDK.
Priority
High - This is a critical authentication bug that prevents core functionality from working.

Root Cause

The issue occurs because the method incorrectly tries to return source.result synchronously instead of returning the Task itself. This happens when:

  1. The method creates a Task with enqueueAuthPost()
  2. Adds a continueWith operation that calls updateByGetAccountInfo()
  3. Incorrectly returns source.result instead of the Task

Code Location

File: src/main/java/com/google/firebase/auth/FirebaseAuth.kt
Method: signInWithCustomToken(customToken: String): Task<AuthResult>
Line: 375

Expected Behavior

The method should return a Task that can be properly awaited using .await() or handled with callbacks, allowing the asynchronous authentication process to complete before accessing the result.

Proposed Fix

Change the return statement from:

return source.result  // ❌ Wrong - tries to get result synchronously

To:

return source.task.continueWithTask {
    updateByGetAccountInfo()
}  // ✅ Correct - returns Task for async handling

Impact

This bug prevents users from successfully authenticating with custom tokens in desktop/JVM environments, breaking the authentication flow for applications using this Firebase Java SDK.

Priority

High - This is a critical authentication bug that prevents core functionality from working.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions