{"record":{"id":"6c9b4b6964f41b50","repo":"microg/GmsCore","slug":"validateaccountrequest-not-supported","errorCode":null,"errorMessage":"ValidateAccountRequest not supported","messagePattern":"ValidateAccountRequest not supported","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"play-services-base/core/src/main/java/org/microg/gms/AbstractGmsServiceBroker.java","lineNumber":267,"sourceCode":"        return scopes;\n    }\n\n    @Override\n    public void getService(IGmsCallbacks callback, GetServiceRequest request) throws RemoteException {\n        GmsService gmsService = GmsService.byServiceId(request.serviceId);\n        if ((supportedServices.contains(gmsService)) || supportedServices.contains(GmsService.ANY)) {\n            handleServiceRequest(callback, request, gmsService);\n        } else {\n            Log.d(TAG, \"Service not supported: \" + request);\n            throw new IllegalArgumentException(\"Service not supported: \" + request.serviceId);\n        }\n    }\n\n    public abstract void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException;\n\n    @Override\n    public void validateAccount(IGmsCallbacks callback, ValidateAccountRequest request) throws RemoteException {\n        throw new IllegalArgumentException(\"ValidateAccountRequest not supported\");\n    }\n\n    @Override\n    public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {\n        if (super.onTransact(code, data, reply, flags)) return true;\n        Log.d(TAG, \"onTransact [unknown]: \" + code + \", \" + data + \", \" + flags);\n        return false;\n    }\n}\n","sourceCodeStart":249,"sourceCodeEnd":277,"githubUrl":"https://github.com/microg/GmsCore/blob/157c9d86ac46c195a86c2f15ab55c84036223f95/play-services-base/core/src/main/java/org/microg/gms/AbstractGmsServiceBroker.java#L249-L277","documentation":"The default AbstractGmsServiceBroker.validateAccount() implementation unconditionally throws IllegalArgumentException 'ValidateAccountRequest not supported'. Only brokers that explicitly override validateAccount can handle these requests; for all others the IPC call is rejected.","triggerScenarios":"A client calls validateAccount() on a broker that has not overridden it — e.g. binding to a service broker that supports getService but not account validation.","commonSituations":"Client code assumes the target GMS service supports account validation (used by some auth flows) but is bound to a broker (or microG service version) that doesn't implement it; version drift between client library expectations and microG implementation.","solutions":["Override validateAccount in the concrete broker subclass if account validation should be supported.","On the client side, detect that validation isn't supported and fall back to a flow that doesn't require validateAccount (e.g. rely on getService/auth calls directly).","Update microG to a version whose relevant broker implements validateAccount."],"exampleFix":"// before\nclass MyBroker extends AbstractGmsServiceBroker { /* no validateAccount override */ }\n// after\nclass MyBroker extends AbstractGmsServiceBroker {\n    @Override\n    public void validateAccount(IGmsCallbacks callback, ValidateAccountRequest request) throws RemoteException {\n        handleValidate(callback, request); // custom implementation\n    }\n}","handlingStrategy":"try-catch","validationCode":"// client-side: only call validateAccount if the bound broker advertises support\nboolean supportsValidateAccount = brokerDescription != null && brokerSupports(brokerDescription, \"validateAccount\");","typeGuard":null,"tryCatchPattern":"try { broker.validateAccount(callback, request); } catch (IllegalArgumentException e) { fallbackToNonValidatingFlow(); }","preventionTips":["Override validateAccount in any broker that must support account validation.","Design client auth flows with a fallback that doesn't require validateAccount.","Document which concrete brokers support account validation."],"tags":["microg","gms","ipc","account-validation"],"backgroundTag":"method-not-implemented","analyzedSha":"157c9d86ac46c195a86c2f15ab55c84036223f95","analyzedAt":"2026-09-06T17:27:33.892Z","contentChangedAt":"2026-09-06T17:27:33.892Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}