Short answer
Google sign-in must open in the device’s real browser or through Google’s native sign-in SDK, not inside a WebView. In your own app, switch to the native Google Sign-In SDK, or open the sign-in URL with ASWebAuthenticationSession on iOS and Custom Tabs on Android. For visitors arriving from social apps, detect the in-app browser and ask them to open the page in their browser, and offer email sign-in as a fallback.
Where the sign-in page is opening, and the fix
01
Google blocks sign-in inside embedded web views
“The authorization endpoint is displayed inside an embedded user-agent disallowed by Google's OAuth 2.0 Policies.” Google, OAuth 2.0 for client-side web applications: error codes
An embedded web view lets the app around it read what the user types, so Google refuses to show its sign-in page there. The block applies whatever your OAuth settings say.
02
Your app shows the website in a WebView
“iOS and macOS developers may encounter this error when opening authorization requests in WKWebView.” Google, OAuth 2.0 for client-side web applications: error codes
Apps that wrap a web app, such as many Capacitor and Cordova apps, open Google’s page inside the same WebView. Google names Google Sign-In for iOS and OpenID Foundation’s AppAuth as the iOS libraries to use. The other route is opening the sign-in URL in the system browser sheet: ASWebAuthenticationSession on iOS, Custom Tabs on Android. Supabase and Firebase both document native and redirect-based Google sign-in.
03
Visitors open your site from a social app
“Web developers may encounter this error when an iOS or macOS app opens a general web link in an embedded user-agent” Google, OAuth 2.0 for client-side web applications: error codes
Links tapped inside Instagram, Facebook, TikTok or LinkedIn open in that app’s own browser, which counts as embedded. You can’t change those apps, so detect the in-app browser from the user agent, show a short “Open in your browser” prompt before the Google button, and keep email or magic-link sign-in available.
04
Test it the way users arrive
Signing in from Safari or Chrome proves nothing here. Simon tests from inside the wrapped app on a real phone, and from a link posted in Instagram and opened in its browser, before calling it fixed.
Checked against the vendor’s docs on : Google Identity: OAuth 2.0 error codes (disallowed_useragent).
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. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
Related: Google sign-in redirect_uri_mismatch · “Google hasn’t verified this app” · Firebase Google sign-in popup blocked