Google OAuth returns redirect_uri_mismatch for a persisted URI while Drive and Calendar work on the same client

Hello Google Cloud Community,

I am troubleshooting a Google OAuth redirect_uri_mismatch issue in a production application.

The same OAuth 2.0 Web application client is used for three integrations:

  • Google Drive
  • Google Calendar
  • Google Contacts

The problem occurs only with the Google Contacts redirect URI.

OAuth Client ID:
(PII Removed by Staff)

Project:
(PII Removed by Staff)

Redirect URIs:

Drive:
https://api.davidcomputer.online/api/integrations/google-drive/callback

Calendar:
https://api.davidcomputer.online/api/integrations/google-calendar/callback

Contacts:
https://api.davidcomputer.online/api/integrations/google-contacts/callback

Current findings:

  1. The Contacts redirect URI is saved and persisted under Google Auth Platform → Clients for the exact Web application OAuth client.

  2. The same URI remains present after closing and reopening the OAuth client.

  3. The URI is also visible in the legacy OAuth Credentials UI.

  4. The production ERP generates the Contacts redirect URI exactly as registered.

  5. A byte-for-byte comparison found zero differences:

    • same length
    • no whitespace differences
    • no hidden/control characters
    • no trailing slash difference
  6. Drive authorization request:
    MATCH / HTTP 200

  7. Calendar authorization request:
    MATCH / HTTP 200

  8. Contacts authorization request:
    HTTP 400 redirect_uri_mismatch

  9. A manually constructed OAuth authorization request using the exact same Contacts redirect URI also returns:
    HTTP 400 redirect_uri_mismatch

  10. All three integrations use the exact same OAuth Client ID.

  11. The OAuth client is active and no duplicate client was found.

  12. Google Auth Platform shows no blocking configuration warning.

Therefore, the registered Contacts URI and the URI sent in the authorization request are identical, but Google’s live OAuth authorization endpoint rejects the Contacts URI while accepting the Drive and Calendar URIs on the same OAuth client.

Has anyone encountered a situation where a redirect URI is visibly persisted in Google Auth Platform but the live OAuth authorization endpoint still returns redirect_uri_mismatch specifically for that URI?

I would appreciate guidance on how to diagnose or reconcile this Google-side OAuth configuration/runtime inconsistency.

No client secret, access token, refresh token, authorization code, cookies, or other credentials are included here.

Thank you.