Short answer
Status 10 means Google says the app is misconfigured. If sign-in works in debug but fails from Google Play, register the app signing key fingerprint from Play Console, not just your upload key. Add the debug fingerprint too, pass the Web client ID as the server client ID, and if you use Firebase, download the updated google-services.json after adding fingerprints.
What Google doesn’t recognise, and the fix
01
Read the error first: 10 is a setup problem
“The application is misconfigured. This error is not recoverable and will be treated as fatal.” Google, CommonStatusCodes.DEVELOPER_ERROR
In Google Play services, status code 10 is DEVELOPER_ERROR. Retrying or asking the user to try again won’t help. Check the log lines around it, then the registrations below.
02
Works in debug, fails from Google Play: the Play signing key isn’t registered
“Because Google signs the final APK, you must register the Google-held app signing key fingerprint with your API providers, not just your local upload key.” Google Play Console Help, Use Play App Signing
With Play App Signing, Google signs the app users install with the app signing key it holds, not your upload key. In Play Console, open Protected with Play > Play Store protection > Manage Play app signing, copy the fingerprint your provider asks for from the App signing key section (Firebase’s field takes the SHA-1), and add it to your Firebase Android app or Google Cloud project.
03
Fails in development: the debug fingerprint is missing
“You should get both the release and debug certificate fingerprints.” Google, Authenticating your client
Google says to get both the release and debug certificate fingerprints. If you don’t use Play App Signing, Gradle’s signingReport gives you the SHA-1 to register.
cd android && ./gradlew signingReport04
The Android client ID is used instead of the Web client ID
The sign-in request needs your server client ID, which is the Web application type OAuth client ID in your Google Cloud project, even in an Android app. Firebase’s sample says to pass your server’s client ID, not your Android client ID.
05
The old google-services.json is still in the app
With Firebase, the updated config file contains the OAuth client information required for Google sign-in. When the Firebase console prompts you, download the updated google-services.json, replace the old one in the Android app, and build again.
Checked against the vendor’s docs on : Google Play Console Help: Use Play App Signing; Google: Authenticating your client (SHA-1 fingerprints); Firebase docs: Authenticate with Google on Android; Google: CommonStatusCodes reference.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way.See scope and start
Related: Google Sign-In on Android: moving to Credential Manager · Google OAuth redirect_uri_mismatch · Firebase auth/unauthorized-domain · Unexpected Gemini API charges on Firebase