Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential.
Vendor documentedHTTP 401 · UNAUTHENTICATED · CREDENTIALS_MISSING
Almost always the same mistake: a service-account JWT was signed and then sent as the credential. A self-signed JWT is not an access token. It is the thing you trade for one.
Post the signed JWT to https://oauth2.googleapis.com/token with grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer, then send the access_token that comes back. JWT claims: iss is the service-account email, aud is the token endpoint itself, exp no more than an hour after iat, and scope set to androidpublisher.
The most-upvoted answer blames putting the token in an access_token query parameter. That part is wrong. Google documents both placements as valid, and its own reply-to-reviews guide uses the query parameter in every example. The header is tidier, but it is not what fixes this error.