microg/GmsCore · error · UnsupportedOperationException

Not yet implemented

Error message

Not yet implemented

What it means

VerificationHandle.isValid() is a stub in this library build that unconditionally throws UnsupportedOperationException with 'Not yet implemented'. The method is documented to report whether the handle is usable for RecaptchaClient.verifyAccount calls, but the implementation is absent. This is a placeholder from an API surface ported without a backing implementation.

Source

Thrown at play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/VerificationHandle.java:56

    /**
     * Returns the validity duration of the object since its creation in minutes.
     */
    public abstract long getTimeoutMinutes();

    /**
     * Returns an encrypted version of the internal verification token that will be used in
     * {@link RecaptchaClient#verifyAccount(String, VerificationHandle)} call.
     */
    public abstract String getVerificationToken();

    /**
     * Returns a boolean indicating if the {@link VerificationHandle} is valid for
     * {@link RecaptchaClient#verifyAccount(String, VerificationHandle)} API calls. An invalid handle will cause
     * {@link RecaptchaClient#verifyAccount(String, VerificationHandle)} calls to fail immediately.
     */
    public boolean isValid() {
        throw new UnsupportedOperationException("Not yet implemented");
    }
}

View on GitHub (pinned to 157c9d86ac)

Solutions

  1. Do not call isValid(); instead attempt verifyAccount and handle its failure to determine handle validity
  2. Check for a newer library version that implements VerificationHandle.isValid()
  3. Wrap the call in try-catch for UnsupportedOperationException and treat the handle as valid (or verify via server-side flow)
  4. Implement/patch the method locally if you vendor this code

Example fix

// before
if (!handle.isValid()) { return; }
client.verifyAccount(nonce, handle);
// after
try {
    client.verifyAccount(nonce, handle);
} catch (ApiException e) {
    // handle invalid/expired handle
}
Defensive patterns

Strategy: try-catch

Try / catch

// VerificationHandle.isValid() is an unimplemented stub in this library
try {
    boolean valid = handle.isValid();
    if (!valid) throw new IllegalStateException("handle invalid");
} catch (UnsupportedOperationException e) {
    // stub not implemented; proceed or validate via verifyAccount failure
}

Prevention

When it happens

Trigger: Calling isValid() on any VerificationHandle obtained from a recaptcha API before using it with RecaptchaClient.verifyAccount(String, VerificationHandle).

Common situations: Developers following Google Play Services Recaptcha docs who check the handle's validity before account verification hit the stub immediately, because this library (e.g. microG play-services-recaptcha) never implemented the check.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of microg/GmsCore@157c9d86ac (2026-09-06). Data as JSON: /api/errors/5b2bd2ebddf97ba9. Report an issue: GitHub.