Veelvoorkomende Google OAuth & Gmail API-fouten (en hoe u ze kunt oplossen)
Elke ontwikkelaar die Gmail of Google Agenda integreert met Google OAuth, krijgt te maken met minstens één van deze Google OAuth-fouten. In deze handleiding staan alle 7 veelvoorkomende Google OAuth-fouten op één plek verzameld – met de precieze oorzaak en een stapsgewijze oplossing voor elke fout. Als je deze Google OAuth-fouten begrijpt, bespaar je jezelf uren aan foutopsporing.
# Google OAuth-tokenuitwisseling
importeer verzoekt
token_antwoord = requests.post(
"https://oauth2.googleapis.com/token",
data={
"code"autorisatiecode,
"client_id": CLIENT_ID,
"client_geheim": CLIENT_SECRET,
"redirect_uri": OMLEIDINGS_URI,
"grant_type": "autorisatiecode"
}
)Overzicht: alle Google OAuth-fouten in één oogopslag
Een samenvatting in één tabel van alle 7 Google OAuth-fouten die in deze handleiding worden behandeld - fase waarin deze optreedt, hoofdoorzaak en de link naar de snelle oplossing in de gedetailleerde sectie hieronder. Markeer deze tabel als referentie bij het opsporen van fouten in Google OAuth-fouten in ontwikkeling of productie.
| Foutmelding | Podium | Oorzaak | Snelle oplossing |
|---|---|---|---|
| redirect_uri_ongelijk | Authorization | De redirect URI in uw verzoek komt niet exact overeen met een geregistreerde URI in de Google Cloud Console | Repareer het |
| admin_beleid_toegepast | Authorization | Een Workspace super admin heeft beperkt welke OAuth-apps of scopes gebruikers in de organisatie toegang mogen verlenen. | Repareer het |
| toegang_geweigerd | Authorization | De app bevindt zich in de testmodus en de gebruiker is geen testgebruiker, of de app vraagt om beperkte toegangsrechten zonder verificatie | Repareer het |
| ongeldige_verlening | Token verversen | Vernieuwingstoken verlopen, ingetrokken of meer dan eens gebruikt (eenmalige verificatiecode) | Repareer het |
| Toestemmingsscherm ontbreekt | Google cloudconsole | Nieuwe Google Cloud UI heeft het OAuth-toestemmingsscherm verplaatst; vereist ook Owner/Editor rol op het project | Repareer het |
| ongeldige_scope | Authorization | Scope URL typefout of de bijbehorende Google API is niet ingeschakeld in het project | Repareer het |
| Google heeft niet geverifieerd | Authorization | De app maakt gebruik van gevoelige/beperkte scopes, maar de verificatie door Google is nog niet voltooid; in de testmodus geldt een limiet van 100 gebruikers | Repareer het |
Fout 400: redirect_uri_mismatch
Dit is de meest voorkomende Google OAuth-fout bij ontwikkelaars die een nieuwe integratie instellen. De fout treedt op tijdens de autorisatiefase – nog voordat er een token is uitgegeven.
Het exacte foutbericht
Fout 400: redirect_uri_mismatch
De omleidings-URI in het verzoek kwam niet overeen met een geregistreerde omleidings-URI.
error=redirect_uri_mismatch
Oorzaak
Google vergelijkt de omleiding_uri parameter die je doorgeeft in je autorisatie-URL met de lijst van geautoriseerde omleidings-URI's die zijn geregistreerd in je OAuth-client in Google Cloud Console. Zelfs een enkel teken verschil - een afsluitende schuine streep, http vs https, of een andere poort - veroorzaakt deze fout.
Repareer (stap voor stap)
https://yourapp.com/oauth/callback. De waarde moet teken-voor-teken identiek zijn, inclusief schema, poort en afsluitende schuine streep.
omleiding_uri De waarde die u doorgeeft aan het autorisatie-eindpunt en aan het token-uitwisselingseindpunt zijn identiek.
redirect_uri_mismatch op localhost
Registreer tijdens lokale ontwikkeling de exacte localhost URI die u gebruikt - bijvoorbeeld http://localhost:3000/callback. Google staat http:// niet alleen https://) voor localhost URI's. Als je je dev-poort wijzigt, vergeet dan niet de geregistreerde URI bij te werken.
Dit zijn twee aparte velden en ze dienen verschillende doeleinden. Geautoriseerde JavaScript-herkomsten worden gebruikt voor OAuth-flows aan de browserzijde (impliciete flow, Google Identity Services). Geautoriseerde omleidings-URI's worden gebruikt voor autorisatiecode-flows aan de serverzijde. Het toevoegen van een URI aan JavaScript-herkomsten zal GEEN redirect_uri_ongelijk fout - u moet het toevoegen aan het veld 'omleidings-URI's'. Een Google OAuth-client kan maximaal 100 omleidings-URI's registreren.
Fout 400: adm-beleid-afgedwongen
Deze fout is geen bug in je code. Het is een organisatorisch beleid, afgedwongen door een Google Workspace superadministrator. Een gewone ontwikkelaar kan dit niet alleen oplossen.
Het exacte foutbericht
Fout 400: admin_policy_enforced
Google Account kan niet worden gebruikt voor autorisatie vanwege het beleid van uw organisatie. Neem contact op met uw beheerder voor meer informatie.
error=admin_policy_enforced
Oorzaak
Een Google Workspace superbeheerder heeft beperkt tot welke externe toepassingen of OAuth-scopes gebruikers in de organisatie toegang mogen verlenen. Dit wordt geconfigureerd via API-besturingselementen in de Google Admin Console. Wanneer een app niet op de lijst met goedgekeurde apps staat, ontvangt elke gebruiker in die Workspace deze foutmelding wanneer deze probeert deze te autoriseren - ongeacht de verificatiestatus van de app.
Dit is een naleving en beveiligingsbeheer, geen verkeerde configuratie aan de kant van de ontwikkelaar. De juiste oplossing is altijd aan de kant van de beheerder.
Herstellen (alleen aan beheerderszijde)
Een gebruiker die tegenkomt admin_beleid_toegepast kunnen het niet zelf oplossen. Ze moeten contact opnemen met hun Google Workspace super admin en vragen of de specifieke OAuth-app als Vertrouwd wordt gemarkeerd. Als de gebruiker de beheerder is, kan deze de bovenstaande stappen volgen. Als het domein een strikt "Alleen specifieke apps toestaan"-beleid afdwingt, moet de app eerst expliciet worden toegevoegd aan de goedgekeurde lijst voordat deze als Vertrouwd kan worden ingesteld.
access_denied & "Deze app is geblokkeerd" (niet-geverifieerde app)
Gebruikers zien een scherm "Deze app is geblokkeerd" of ontvangen toegang_geweigerd in de OAuth-callback. Dit kan meerdere oorzaken hebben, afhankelijk van of je app nog in de testmodus staat of beperkte scopes target.
Het exacte foutbericht
Toegang geblokkeerd: [Uw app-naam] heeft het Google-verificatieproces niet voltooid
fout=access_denied
-- of --
Deze app is geblokkeerd.
Deze app probeerde toegang te krijgen tot gevoelige informatie in uw Google-account.
Neem contact op met de ontwikkelaar voor meer informatie.
Oorzaken
Terwijl je OAuth-app de publicatiestatus "Testen" heeft, kunnen alleen gebruikers die expliciet zijn toegevoegd als testgebruikers deze autoriseren. Iedereen anders krijgt onmiddellijk toegang geweigerd.
Testmodus is beperkt tot 100 unieke testgebruikers tegelijk. Zodra u 100 bereikt, kunnen nieuwe gebruikers de app niet autoriseren, zelfs niet als ze worden toegevoegd.
Bereiken zoals gmail-aanpassen of gmail.verzenden zijn Gevoelige bereiken. Apps die erom vragen, moeten het verificatieproces van Google voltooien voordat echte gebruikers toegang kunnen verlenen.
Een klein aantal scopes (bv. volledige Gmail-toegang) is beperkt en vereist naast verificatie ook een externe beveiligingsaudit (CASA).
Repareer
ongeldige_toekenning: "verbinding je Gmail-account opnieuw"
De gmail api ongeldige toekenning Foutmeldingen zijn een van de meest verwarrende aspecten van productie - ze werken stilzwijgend voor een subset van gebruikers en vereisen een nieuwe OAuth-stroom om te herstellen. Inzicht in de levenscyclus van de vernieuwingstoken is de sleutel om dit correct af te handelen.
Het exacte foutbericht
{"fout": "ongeldige_toekenning", "fout_omschrijving": "Token is verlopen of ingetrokken."}
-- of --
{"fout": "ongeldige_toekenning", "fout_omschrijving": "Verzoek ongeldig"}
Oorzaak: de levenscyclus van de vernieuwingstoken
Reparatie: opnieuw autoriseren met access_type=offline + prompt=consent
van google_auth_oauthlib.flow importeer Stroom
stroming = Flow.from_client_secrets_file(
'client_secrets.json',
scopes=['https://www.googleapis.com/auth/gmail.readonly'],
redirect_uri=REDIRECT_URI
)
# access_type=offline → een vernieuwingstoken ophalen
# prompt=consent → dwingt tot hernieuwde toestemming, geeft altijd een nieuw vernieuwingstoken terug
auth_url, staat = stroom.autorisatie_url(
toegangstype='offline',
prompt='toestemming'
)
# Sla het NIEUWE refresh_token uit het antwoord op
Het oude #-token is nu ongeldig -- werk je database bijTe vermijden ongeldige_verlening in productie: altijd gebruiken access_type=offline en toestemming bij het starten van de OAuth-flow, werkt u uw opgeslagen vernieuwingstoken telkens bij wanneer de gebruiker opnieuw autoriseert, detecteert u ongeldige_verlening fouten veroorzaken en een soepele herautorisatie-interface (een prompt om "uw Gmail-account opnieuw te verbinden") activeren, en uw app uit de testmodus halen om permanente tokens te verkrijgen.
Het OAuth-scherm met toestemming wordt niet weergegeven in de Google Cloud Console
Dit is de meest voorkomende zoekopdracht in deze cluster (390+ maandelijkse zoekopdrachten). De pagina "OAuth-verlementscherm" lijkt in 2024-2026 uit Google Cloud Console te zijn verdwenen voor veel ontwikkelaars vanwege een herontwerp van de gebruikersinterface. Het is niet verwijderd - het is verplaatst.
Symptoom
U opent de Google Cloud Console en navigeert naar API's en Services, maar het menu-item "OAuth-verificatiescherm" ontbreekt of er wordt bij het klikken naartoe doorgestuurd naar een nieuwe "OAuth Overzicht" pagina die een samenvattend dashboard weergeeft in plaats van het verwachte configuratieformulier.
Oorzaken
Repareer (stap voor stap)
https://console.cloud.google.com/apis/credentials/consent?project=YOUR_PROJECT_ID. Deze diepe link omzeilt de overzichtspagina en gaat rechtstreeks naar de instellingen van het toestemmingsscherm.
ongeldige_scope
Een typfout in de scope-URL of een uitgeschakelde API zal ertoe leiden dat Google de gehele autorisatieaanvraag afwijst voordat er enige gebruikersinteractie plaatsvindt.
Het exacte foutbericht
{"error": "invalid_scope",
"error_description": "Sommige gevraagde scopes waren ongeldig.
{valid=[https://mail.google.com/], invalid=[gmail.readonly]}"}
-- of op de toestemmingsscherm-URL --
error=invalid_scope&error_description=Sommige+gevraagde+scopes+waren+ongeldig
Oorzaak
Twee veelvoorkomende hoofdoorzaken: (1) de scope-waarde is een korte naam zoals gmail.alleenlezen in plaats van de volledige URL https://www.googleapis.com/auth/gmail.readonly, of (2) de Gmail API (of een andere Google API waarop je je richt) niet is ingeschakeld in het Google Cloud-project.
Veelvoorkomende Gmail-bereiken en hun juiste URL's
| Scope URL (gebruik de volledige URL) | Wat het toestaat | Type |
|---|---|---|
| https://www.googleapis.com/auth/gmail.readonly | Lees alle berichten en threads | Gevoelig |
| https://www.googleapis.com/auth/gmail.send | E-mail verzenden namens de gebruiker | Gevoelig |
| https://www.googleapis.com/auth/gmail.modify | Lees, stel samen, verzend, verwijder threads | Gevoelig |
| https://mail.google.com/ | Volledige mailboxtoegang (IMAP/SMTP) | Beperkt |
| https://www.googleapis.com/auth/userinfo.email | Lees alleen het e-mailadres van de gebruiker | Basis |
Repareer
https://www.googleapis.com/auth/ of https://mail.google.com/). Gebruik nooit de korte vorm zoals gmail.alleenlezen.
"Google heeft deze app niet geverifieerd" & de limiet van 100 gebruikers
Het waarschuwingsscherm "Google heeft deze app niet geverifieerd" verschijnt wanneer een niet-geverifieerde app gevoelige of beperkte scopes aanvraagt. Hoewel gebruikers door kunnen gaan door op "Geavanceerd" en vervolgens op "Ga naar [appnaam] (onveilig)" te klikken, is dit niet geschikt voor productie - en de testmodus beperkt je app tot maximaal 100 unieke gebruikers.
Oorzaak
Wanneer je app gevoelige scopes aanvraagt (zoals gmail.alleenlezen of gmail.verzenden), toont Google dit waarschuwingsscherm aan elke gebruiker totdat u de verificatiebeoordeling voltooit. Voor beperkte bereiken moet u ook een beveiligingsaudit door derden (CASA Tier 2) doorstaan.
Tijdens de publicatiestatus Test wordt dit waarschuwingsscherm ook weergegeven, zelfs voor testgebruikers, en het totale aantal toegestane testgebruikers is beperkt tot 100. Tokens voor testgebruikers verlopen na 7 dagen.
Repareer
https://mail.google.com/: aanvullend compleet een CASA Tier 2 beveiligingsbeoordeling door een door Google goedgekeurde beoordelaar.
Deze fouten verdwijnen wanneer het OAuth-project al is gecertificeerd
Het scherm "Google heeft deze app niet geverifieerd", de limiet van 100 gebruikers en de 7 dagen dat de token verloopt in de testmodus zijn allemaal symptomen van uw eigen Google Cloud-project beheren en er eigenaar van zijn. Een onafhankelijke technische tussenpersoon die optreedt namens elke geauthenticeerde gebruiker - en heeft de CASA Tier 2-certificering al voltooid - verwijdert deze hele overhead van uw kant. Uw gebruikers autoriseren eenmalig; token-levenscyclus, scope compliance en herverificatie worden op platformniveau afgehandeld.
Dit is geen tijdelijke oplossing voor de beveiligingsbeoordeling van Google. Unipile heeft CASA Tier 2 onafhankelijk afgerond en is niet gelieerd aan, goedgekeurd door, of gesponsord door Google.
Verzend op reeds gecertificeerde Google OAuthHoe deze hele klasse van Google OAuth-fouten te vermijden
Als we kijken naar alle 7 Google OAuth-fouten in deze gids, verschijnt er een patroon. Elk van hen is afkomstig van dezelfde bron: het handmatig beheren van uw eigen Google Cloud-project en de bijbehorende OAuth-configuratie. Deze Google OAuth-fouten zijn niet willekeurig - het zijn structurele gevolgen van het bezitten van een niet-geverifieerd OAuth-project, van mismatches in de redirect-URI en storingen in tokenrotatie tot de limiet van 100 gebruikers en afwijzingen van het toestemmingsscherm.
Er is nog een andere manier. Met een onafhankelijke technische tussenpersoon dat optreedt namens elke geauthenticeerde gebruiker - een die reeds de verificatiebeoordeling van Google heeft doorlopen en de CASA Tier 2-beveiligingscertificering heeft behaald - neemt al deze faalmodi van u over. De onderstaande vergelijking laat precies zien welke fouten verdwijnen en welke infrastructuur Unipile beheert. Zie de Unipile Google OAuth documentatie voor de volledige integratiehandleiding.
Wie is verantwoordelijk voor de oplossing van elke fout in deze handleiding?
De 7 Google OAuth-fouten die hierboven zijn behandeld, delen een gemeenschappelijke oorzaak: u bent eigenaar van het Google Cloud-project, dus u bent verantwoordelijk voor elke faalmodus. Hier is een vergelijking van wat dat in de praktijk betekent.
Het belangrijkste onderscheid: Unipile heeft de beveiligingsbeoordeling van Google en de CASA Tier 2-beoordeling voor de verbindingen die het namens u tot stand brengt, al afgerond. Dit is geen tijdelijke oplossing voor de beveiligingsbeoordeling van Google - Unipile heeft deze al doorlopen. Uw gebruikers krijgen een duidelijk toestemmingsscherm (geen waarschuwing voor "niet-geverifieerde app"), uw app wordt onmiddellijk verzonden en u kunt uw eigen Google Cloud-verificatie parallel volgen zonder druk van een productiedeadline.
Compliance-opmerking: Unipile is een onafhankelijke technische tussenpersoon, niet gelieerd aan, goedgekeurd door of gesponsord door Google. Unipile's Google OAuth-client is CASA Tier 2-gecertificeerd, waardoor uw gebruikers toegang tot Gmail kunnen autoriseren zonder een "niet-geverifieerde app"-waarschuwing voor verbindingen die via Unipile worden tot stand gebracht. Dit is geen omzeiling van de veiligheidscontrole van Google - Unipile is er al doorheen gekomen voor de verbindingen die het tot stand brengt namens elke geauthenticeerde gebruiker. Gebruikers kunnen de toegang op elk moment intrekken via de machtigingenpagina van hun Google-account.
Google OAuth-fouten FAQ
Antwoorden op de meest voorkomende vragen over Google OAuth-fouten en Gmail API-fouten, met betrekking tot de levenscyclus van tokens, beheerdersbeleid, omleidings-URI's en configuratie van de Google Cloud Console.
admin_beleid_toegepast betekent dat een Google Workspace superbeheerder uw app of de specifieke OAuth-bereiken die deze aanvraagt, heeft geblokkeerd voor autorisatie door gebruikers in die organisatie. Het is een organisatorisch toegangscontrolebeleid, geen bug in uw code. De oplossing vereist actie van de Workspace superbheerder in de Google Admin Console onder Beveiliging > API-controles > Beheer toegang van apps van derden.
Nee. Een normale gebruiker kan admin_policy_enforced niet herstellen. Alleen een Google Workspace superbeheerder U kunt deze fout oplossen door de app als vertrouwd te markeren in de Admin Console. De betreffende gebruiker moet contact opnemen met zijn IT-beheerder of Workspace super-beheerder en verzoeken dat de specifieke OAuth-app wordt toegevoegd aan de goedgekeurde lijst.
De redirect_uri_ongelijk op localhost gebeurt wanneer de URI die u registreert in de Google Cloud Console niet exact overeenkomt met de URI die uw lokale ontwikkelserver gebruikt. Bijvoorbeeld, registreren http://localhost:3000/callback maar draaiend op poort 3001, of het vergeten van een afsluitende slash. Google staat toe http:// niet alleen https://) voor localhost URI's. Registreer de exacte URI die uw lokale server gebruikt, inclusief het juiste poortnummer.
Nee. Geautoriseerde JavaScript-oorsprongen en geautoriseerde omleidings-URI's zijn twee afzonderlijke velden. JavaScript-oorsprongen worden alleen gebruikt voor OAuth-stromen aan de kant van de browser. Om te repareren redirect_uri_ongelijk, moet u de URI toevoegen aan de Geautoriseerde omleidings-URI's veld, niet tot JavaScript-oorsprongen.
Eén Google OAuth 2.0-client kan maximaal 100 Geautoriseerde doorverwijzings-URI's geregistreerd. Dit stelt je in staat om URIs te registreren voor verschillende omgevingen (lokale ontwikkeling, staging, productie) en verschillende callback-paden binnen dezelfde client.
Als je app in Publicatiestatus testen, Google verfrisst tokens verlopen na 7 dagen ongeacht het gebruik. Dit is zo ontworpen voor niet-geverifieerde apps. Ga naar Productiestatus door te klikken op App publiceren op de OAuth-toestemmingsschermpagina om langdurige tokens te verkrijgen. In Productie blijven vernieuwingstokens geldig zolang de gebruiker uw app minstens één keer per 6 maanden gebruikt.
Google trekt vernieuwingstokens in die niet zijn gebruikt voor 6 maanden (ongeveer 180 dagen). Tokens worden ook ingetrokken wanneer: de gebruiker zijn Google-accountwachtwoord wijzigt, de gebruiker de toegang tot de app intrekt in de beveiligingsinstellingen van zijn Google-account, u opnieuw autoriseert met andere bereiken, of het totale aantal vernieuwingstokens voor een enkele gebruikers-app-combinatie 50 overschrijdt (de oudste worden eerst ingetrokken).
Google heeft de Cloud Console in 2024 opnieuw ontworpen. De configuratie van het OAuth-toestemmingsscherm bevindt zich nu binnen API's en Services > OAuth-overzicht. Klik App bewerken of gebruik de tabbladen Branding, Doelgroep en Scopes. Controleer ook: u hebt Bewerker of eigenaar rol op het project (Viewer kan het formulier niet openen) en zorg ervoor dat u zich op het juiste project bevindt met behulp van de projectkiezer bovenaan de console.
Loop je nog steeds tegen een Google OAuth-fout aan die hier niet wordt vermeld? Sla het debuggen over en laat Unipile de Gmail OAuth voor je regelen.
Nu bouwen