Google OAuth consent screen: setup, Internal vs External, and why it isn't showing
The Google OAuth consent screen is now configured in the Google Cloud console under Google Auth Platform, split into Branding, Audience, Data Access and Clients (as of Oct 2026). Pick External unless every user is in your own Workspace or Cloud Identity organization, then fill in branding, scopes and test users, and create an OAuth client.
Where the consent screen settings are now
The old single "OAuth consent screen" page has been split into sections of the Google Auth Platform (Get started with the Google Auth Platform). As of Oct 2026:
| Section | What you set there |
|---|---|
| Overview | Starting point and app metrics. |
| Branding | App name, support email, logo, home page, privacy policy, terms, authorized domains, developer contact. |
| Audience | User type (Internal or External), publishing status (Testing or In production), test users. |
| Data Access | The OAuth scopes your app requests. |
| Clients | OAuth client IDs, Authorized JavaScript origins, Authorized redirect URIs. |
| Verification Center | Status of verification for production apps. |
Google's own setup instructions now start at Menu > Google Auth platform > Branding (Configure the OAuth consent screen). Once configured, the consent screen cannot be removed from the project.
Internal or External?
| Internal | External | |
|---|---|---|
| Who can sign in | Only accounts in your Google Cloud organization | Any Google Account (limited to test users while in Testing) |
| Needs a Google Cloud organization | Yes | No |
| Unverified app screen / 100-user cap | Not applied | Applies to unapproved sensitive or restricted scopes |
| Outsiders see | org_internal error |
Normal sign-in |
Sources: Manage App Audience, When is verification not needed.
Choose Internal for a company tool used only by your Workspace accounts. Choose External for anything public, and for any project created with a personal Gmail account, which has no organization.
Setup, step by step
As of Oct 2026, following Google's current flow (Configure the OAuth consent screen):
- In the Google Cloud console, select your project and open Google Auth Platform. If it says "Google Auth platform not configured yet", click Get Started.
- App Information: enter the App name and a User support email you monitor. Click Next.
- Audience: choose Internal or External. Click Next.
- Contact Information: enter the email Google should use for project notifications. Click Next.
- Finish: accept the Google API Services User Data Policy, click Continue, then Create.
- Data Access > Add or Remove Scopes: pick the narrowest scopes you need. For sign-in only,
openid,.../auth/userinfo.emailand.../auth/userinfo.profileare enough. Click Save. - Audience > Test users > Add users (External apps in Testing): add your own account and any testers. Click Save.
- Branding: add the home page, privacy policy and terms links and your authorized domains (Manage OAuth App Branding).
- Clients > Create Client: choose Web application, then add your Authorized JavaScript origins and Authorized redirect URIs. The client secret is shown only right after creation, so copy it then (Manage OAuth Clients).
The redirect URI depends on your auth library:
Auth.js (NextAuth v5) https://example.com/api/auth/callback/google
Supabase Auth copy the Callback URL from the Google provider page in the Supabase dashboard
(local development: http://127.0.0.1:54321/auth/v1/callback)
Firebase Auth https://<your-auth-domain>/__/auth/handler
Sources: Auth.js Google provider, Supabase: Login with Google, Firebase redirect best practices. If Google rejects the URI later, see redirect_uri_mismatch.
Changes to origins and redirect URIs can take 5 minutes to a few hours to apply (Manage OAuth Clients).
Why the consent screen is not showing
1. The user already granted access
Google shows the consent screen when the user has not previously authorized your app. After that, sign-in usually goes straight back to your app (OpenID Connect). This is expected. To see it again while testing, either remove the app from the test account at myaccount.google.com/linkedapps (Google Account Help), or force it with prompt=consent, which shows consent every time.
2. Your code sets prompt or login_hint
prompt=none shows no screens at all and returns an error if the user isn't already signed in and consented. login_hint suppresses the account chooser. prompt=select_account forces the account chooser (OpenID Connect). Firebase passes prompt through setCustomParameters; its API reference lists hd, hl, include_granted_scopes, login_hint and prompt as valid Google parameters (Firebase GoogleAuthProvider reference). Set them per library:
// Firebase Web SDK: always show the account chooser
import { GoogleAuthProvider } from "firebase/auth";
const provider = new GoogleAuthProvider();
provider.setCustomParameters({ prompt: "select_account" });
// Auth.js (auth.ts): show consent every time and get a refresh token
import NextAuth from "next-auth"
import Google from "next-auth/providers/google"
export const { handlers, auth, signIn, signOut } = NextAuth({
providers: [
Google({
authorization: {
params: { prompt: "consent", access_type: "offline", response_type: "code" },
},
}),
],
})
// Supabase: same idea
await supabase.auth.signInWithOAuth({
provider: "google",
options: { queryParams: { access_type: "offline", prompt: "consent" } },
})
Sources: Firebase: Authenticate using Google, Firebase GoogleAuthProvider reference, Auth.js Google provider, Supabase: Login with Google. Auth.js notes that forcing consent makes users confirm access on every sign-in, so use it deliberately.
3. Google shows an error page instead
If you see "Access blocked" rather than a consent screen, the request was rejected before consent. Read the error code: see Access blocked: This app's request is invalid for Error 400 codes, or App has not completed Google verification for the Testing-mode 403 access_denied block.
4. You can't find the page in the console
The settings moved into Google Auth Platform sections (table above; labels as of Oct 2026). If fields are read-only, check that you are in the right project and that your account has edit rights on it.
Consent screen verification
Two different reviews exist (Verification requirements):
- Brand verification applies to every app that wants its name and logo shown. Without it, users see only your application domain (Manage OAuth App Branding). As of Oct 2026, a Verify Branding button appears on the Branding page when needed; a successful check changes the status to Ready to publish, and you then click Publish branding. Uploading a new logo to a production External app triggers verification again.
- Scope verification applies only to sensitive or restricted scopes and adds a use-case review, demo video and, for restricted scopes, a security assessment.
Getting the app name and logo right is covered in Google sign-in app name.
How to confirm it worked
- In a private window with a test account, start sign-in: you see the account chooser, then the consent screen listing your requested scopes.
- The screen shows your app name and logo once brand verification is published; before that, it shows your domain.
- Sign in a second time without
prompt=consent: Google skips consent, which confirms the grant was stored.
Related problems
- Name shows as a domain instead of your brand: Google sign-in app name
- Supabase configuration: Supabase Google OAuth setup
FAQ
Should I choose Internal or External for the Google OAuth consent screen?
Choose Internal only if every user belongs to your Google Cloud organization; outsiders get an org_internal error. Everything else, including projects owned by a personal Gmail account, needs External (Manage App Audience).
Where did the OAuth consent screen go in Google Cloud console?
As of Oct 2026 it is under Google Auth Platform, split into Branding, Audience, Data Access and Clients (Get started with the Google Auth Platform).
Why doesn't Google show the consent screen on every login?
Consent is shown when the user hasn't previously authorized your app; later sign-ins skip it. Add prompt=consent to show it every time (OpenID Connect).
Why does the consent screen show my domain instead of my app name?
Google displays the app name and logo only after brand verification; until then only your application domain is visible (Manage OAuth App Branding).
Do I need verification for the consent screen?
Scope verification is needed only for sensitive or restricted scopes. Brand verification is needed if you want your name and logo shown (OAuth App Verification Help Center).
Sources
- Get started with the Google Auth Platform - Google Cloud Platform Console Help
- Configure the OAuth consent screen and choose scopes - Google Workspace for Developers
- Manage App Audience - Google Cloud Platform Console Help
- When is verification not needed - Google Cloud Platform Console Help
- Manage OAuth App Branding - Google Cloud Platform Console Help
- Manage OAuth Clients - Google Cloud Platform Console Help
- Verification requirements - Google Cloud Platform Console Help
- OAuth App Verification Help Center - Google Cloud Platform Console Help
- OpenID Connect - Google for Developers
- Share some access to your Google Account data with apps from other developers - Google Account Help
- Google provider - Auth.js
- Login with Google - Supabase Docs
- Authenticate Using Google with JavaScript - Firebase
- GoogleAuthProvider (setCustomParameters) - Firebase API reference
- Best practices for using signInWithRedirect on browsers that block third-party storage access - Firebase
How this page was made: drafted with AI from the sources listed, reviewed by Pewterkit. Docs checked 27 Oct 2026. Spotted something out of date? Tell us.
Related guides
- "Access blocked: This app's request is invalid" - find the real error and fix it
- "Error 400: invalid_request" on Google sign-in: read the details and fix the cause
- "Access blocked: app has not completed the Google verification process" - why and how to fix it
- Sign in with Google button or One Tap not showing: how to fix it