Yaygın Google OAuth ve Gmail API Hataları (ve Her Birini Düzeltme Yolları)
Gmail'i veya Google Takvimi'ni Google OAuth ile entegre eden her geliştirici en az bir kez bu google oauth hatalarıyla karşılaşacaktır. Bu rehber, yaygın Google OAuth hatalarının tamamını tek bir yerde toplar - her biri için kesin nedenini ve adım adım çözümünü içerir. Bu google oauth hatalarını anlamak saatler sürecek hata ayıklamadan tasarruf etmenizi sağlayacaktır.
# Google OAuth jeton değişimi
İthalat istekleri
jeton_yanıtı = requests.post(
"https://oauth2.googleapis.com/token",
veri={
"kod"yetkilendirme_kodu,
"istemci_kimliği": İSTEMCİ_KİMLİĞİ,
"client_secret"CLIENT_SECRET,
"yönlendirme_url": YÖNLENDİRME_URI,
"grant_type": "yetkilendirme_kodu"
}
)Hızlı başvuru: Tüm Google OAuth hatalarına bir bakış
Bu kılavuzda ele alınan 7 Google OAuth hatasının tamamının tek bir tablo halinde özeti - oluştuğu aşama, temel neden ve aşağıdaki ayrıntılı bölüme hızlı düzeltme bağlantısı. Geliştirme veya üretim ortamlarında Google OAuth hatalarını ayıklarken bu tabloyu bir başvuru olarak işaretleyin.
| Hata mesajı | Sahne | Temel neden | Hızlı çözüm |
|---|---|---|---|
| yeniden_yönlendirme_urf_eşleşmiyor | Authorization | İsteğinizdeki yönlendirme URI'si, Google Cloud Console'da kayıtlı olanlardan biriyle tam olarak eşleşmiyor | Düzelt |
| yönetici_politika_uygulandı | Authorization | Bir Workspace süper yöneticisi, kuruluştaki kullanıcıların hangi OAuth uygulamalarına veya kapsamlarına erişim izni verebileceğini kısıtladı. | Düzelt |
| erişim_engellendi | Authorization | Uygulama test modunda ve kullanıcı bir test kullanıcısı değil veya uygulama doğrulaması olmadan kısıtlanmış kapsamları istiyor | Düzelt |
| geçersiz_hibe | Belirteç yenileme | Yenileme jetonu süresi doldu, iptal edildi veya birden fazla kullanıldı (tek kullanımlık kimlik doğrulama kodu) | Düzelt |
| Rıza ekranı eksik | Google Cloud Console | Yeni Google Cloud kullanıcı arayüzü OAuth onay ekranını taşıdı; ayrıca proje üzerinde Sahip/Düzenleyici rolü gerektiriyor | Düzelt |
| geçersiz_kapsam | Authorization | Kapsam URL hatası veya karşılık gelen Google API'si projede etkin değil | Düzelt |
| Google doğrulamadı | Authorization | Uygulama hassas/kısıtlı kapsamlar kullanıyor ancak Google doğrulamayı tamamlamadı; Test modu 100 kullanıcı ile sınırlıdır | Düzelt |
Hata 400: redirect_uri_mismatch
Bu, yeni bir entegrasyon kuran geliştiricilerin karşılaştığı en yaygın Google OAuth hatasıdır. Herhangi bir belirteç verilmeden önce, yetkilendirme adımı sırasında tetiklenir.
Hata mesajının tam hali
Hata 400: redirect_uri_uyuşmazlığı
İstek içindeki yönlendirme URI'si kayıtlı bir yönlendirme URI'si ile eşleşmedi.
hata=redirect_uri_uyuşmazlığı
Sebep
Google karşılaştırır yönlendirme_url'si Google Cloud Console'da OAuth istemcinizde kayıtlı olan yetkili yönlendirme URI'leri listesiyle yetkilendirme URL'nize ilettiğiniz parametre. Tek bir karakter farkı bile - bir eğik çizgi, http vs https, veya farklı bir port - bu hataya neden olur.
Sabitle (adım adım)
https://yourapp.com/oauth/callback. Değer, şema, port ve sondaki eğik çizgi dahil olmak üzere karakter karakter aynı olmalıdır.
yönlendirme_url'si Yetkilendirme uç noktasına ve jeton değişim uç noktasına geçirdiğiniz değer aynıdır.
localhost'ta yönlendirme URI'si eşleşmiyor
Yerel geliştirme sırasında, kullandığınız tam localhost URI'sini kaydedin - örneğin http://localhost:3000/callback. Google izin verir http:// sadece https://) yerel ana makine URI'leri için. Geliştirme bağlantı noktanızı değiştirirseniz, kayıtlı URI'yi güncellemeyi unutmayın.
Bunlar iki ayrı alandır ve farklı amaçlara hizmet ederler. Tarayıcı tarafı OAuth akışları (örtük akış, Google Kimlik Hizmetleri) için yetkili JavaScript kaynakları kullanılır. Sunucu tarafı yetkilendirme kodu akışları için yetkili yönlendirme URI'leri kullanılır. JavaScript kaynaklarına bir URI eklemek şu sorunu çözmez: yeniden_yönlendirme_urf_eşleşmiyor hata - bunu yönlendirme URI'leri alanına eklemelisiniz. Bir Google OAuth istemcisi en fazla 100 yönlendirme URI'si kaydedebilir.
Hata 400: admin_policy_enforced
Bu hata kodunuzda bir hata değildir. Google Workspace süper yöneticisi tarafından uygulanan kurumsal bir politikadır. Sıradan bir geliştirici bunu tek başına düzeltemez.
Hata mesajının tam hali
Hata 400: admin_policy_enforced
Kuruluşunuzun politikaları nedeniyle Google Hesabı yetkilendirme için kullanılamıyor. Daha fazla bilgi için yöneticinizle iletişime geçin.
hata=admin_policy_enforced
Sebep
Bir Google Workspace süper yöneticisi, kuruluşunuzdaki kullanıcıların hangi üçüncü taraf uygulamalara veya OAuth kapsamlarına erişim izni verebileceğini kısıtlamıştır. Bu, aşağıdakiler aracılığıyla yapılandırılır API Kontrolleri Google Yönetici Konsolu'nda. Bir uygulama onaylı listede olmadığında, uygulamanın doğrulama durumundan bağımsız olarak Workspace'teki her kullanıcı uygulamayı yetkilendirmeye çalıştığında bu hatayı alır.
Bu bir uyumluluk ve güvenlik kontrolü, geliştirici tarafında yanlış yapılandırma değil. Doğru çözüm her zaman yönetici tarafında.
Düzeltme (yalnızca admin tarafı)
karşılaşan bir kullanıcı yönetici_politika_uygulandı çözemezler. Google Workspace süper yöneticileriyle iletişime geçmeleri ve belirli OAuth uygulamasının Güvenilir olarak işaretlenmesini istemeleri gerekir. Kullanıcı yönetici ise, yukarıdaki adımları uygulayabilir. Etki alanı katı bir "Belirli uygulamalara izin ver" ilkesi uyguluyorsa, uygulama Güvenilir olarak ayarlanmadan önce onaylı listeye açıkça eklenmelidir.
Dahili araçlar geliştiriyorsanız ve kullanıcı başına OAuth onayından tamamen kaçınmak istiyorsanız, Alan Genişi Yetkilendirmeye sahip bir hizmet hesabı alternatiftir - bkz Gmail hizmet hesabı ve DWD kılavuzu.
erişim_engellendi & "Bu uygulama engellendi" (doğrulanmamış uygulama)
Kullanıcılar "Bu uygulama engellendi" ekranını görüyor veya erişim_engellendi OAuth geri çağırmasında. Birden fazla kök nedeni vardır; uygulamanız hala Test modunda olup olmadığına veya kısıtlı kapsamları hedefleyip hedeflemediğine bağlı olarak.
Hata mesajının tam hali
Erişim engellendi: [Uygulama Adınız], Google doğrulama sürecini tamamlamadı
hata=erişim_reddedildi
-- veya --
Bu uygulama engellendi.
Bu uygulama Google Hesabınızdaki hassas bilgilere erişmeye çalıştı.
Daha fazla bilgi için geliştiriciyle iletişime geçin.
Nedenler
OAuth uygulaması "Test Etme" yayın durumudayken, yalnızca açıkça test kullanıcısı olarak eklenenler yetkilendirebilir. Diğer herkes hemen erişim reddi alır.
Test modu herhangi bir zamanda 100 benzersiz test kullanıcısı ile sınırlıdır. 100'e ulaştığınızda, yeni kullanıcılar eklenmiş olsalar bile uygulamayı yetkilendiremez.
Kapsamlar gibi gmail.değiştir veya gmail.gönder Hassas kapsamlar. Bunları isteyen uygulamalar, gerçek kullanıcıların erişim izni verebilmesi için Google'ın uygulama doğrulama sürecini tamamlamalıdır.
Bazı kapsamlar (örneğin tam Gmail erişimi) Kısıtlıdır ve doğrulamanın yanı sıra üçüncü taraf bir güvenlik denetimi (CASA) gerektirir.
Düzelt
geçersiz_verilen: "Gmail hesabınızı yeniden bağlayın"
Bu geçersiz hibe Üretimde en kafa karıştırıcı şeylerden biri hatadır - kullanıcıların bir alt kümesi için sessizce bozulur ve kurtarma için yeni bir OAuth akışı gerektirir. Yenileme belirteci yaşam döngüsünü anlamak, bunu doğru şekilde yönetmenin anahtarıdır.
Hata mesajının tam hali
{"error": "geçersiz_hibe", "error_description": "Belirteç süresi dolmuş veya iptal edilmiş."}
-- veya --
{"error": "geçersiz_hibe", "error_description": "Kötü İstek"}
Neden: yenileme belirteci yaşam döngüsü
Düzeltme: access_type=offline + prompt=consent ile yeniden yetkilendirin
itibaren google_auth_oauthlib.flow İthalat Akış
akış = Flow.from_client_secrets_file(
'client_secrets.json',
scopes=['https://www.googleapis.com/auth/gmail.readonly'],
redirect_uri=YÖNLENDİRME_URI
)
# access_type=offline → yenileme jetonu al
# prompt=consent → yeniden onay isteme, her zaman yeni bir yenileme jetonu döndürür
auth_url, durum = akış.yetkilendirme_url(
erişim_türü='çevrimdışı',
istem'rıza'
)
# Yanıtta bulunan YENİ refresh_token'ı saklayın
# eski jetonu artık geçersizdir — veritabanınızı güncelleyinKaçınmak için geçersiz_hibe üretimde: her zaman kullan erişim_türü=çevrimdışı ve rıza OAuth akışını başlatırken, kullanıcı yeniden yetkilendirme yaptığında her zaman sakladığınız yenileme belirtecini güncelleyin, algıla geçersiz_hibe hatalar ve etkili bir yeniden yetkilendirme kullanıcı arayüzünü tetikleyin ("Gmail hesabınızı yeniden bağlayın" istemi) ve kalıcı jetonları almak için uygulamanızı Test modundan çıkarın.
Google Cloud Console'da OAuth onay ekranı görünmüyor
Bu, bu kümedeki en yüksek hacimli arama sorgusudur (aylık 390"dan fazla arama). "OAuth onay ekranı" sayfası, bir kullanıcı arayüzü yeniden tasarımı nedeniyle 2024-2026 yıllarında birçok geliştirici için Google Cloud Console'dan kaybolmuş gibi görünüyor. Kaldırılmamıştır - taşınmıştır.
Belirti
Google Cloud Console'u açarsınız ve şuraya gidersiniz: API'ler ve Hizmetler, ancak "OAuth onay ekranı" menü öğesi ya eksik ya da tıklamak sizi yeni bir yere yönlendiriyor. "OAuth Genel Bakış" Beklediğiniz yapılandırma formu yerine özet bir gösterge tablosu gösteren sayfa.
Nedenler
Sabitle (adım adım)
https://console.cloud.google.com/apis/credentials/consent?project=YOUR_PROJECT_ID. Bu derin bağlantı, genel bakış sayfasını atlar ve doğrudan onay ekranı yapılandırmasına gider. Her yapılandırma alanı, kullanıcı tipi seçimi ve 100 kullanıcılık test sınırı hakkında tam bir yol tarifi için lütfen şuraya bakın: OAuth onay ekranı kurulum rehberi.
Haftalarca süren doğrulama.
Kullanım Unipile anahtarı ve şimdi başla.
Google'ın incelemesini bekleyerek müşteri kaybetmeyin. Önceden doğrulanmış geliştirici kimlik bilgilerimizle 5 dakikada Gmail hesaplarını bağlayın.
geçersiz_kapsam
Kapsam URL'sindeki bir yazım hatası veya devre dışı bırakılmış bir API, herhangi bir kullanıcı etkileşiminden önce Google'ın tüm yetkilendirme isteğini reddetmesine neden olacaktır.
Hata mesajının tam hali
{"hata": "geçersiz_kapsam",
"hata_açıklaması": "İstenen bazı kapsamlar geçersizdi.
{geçerli=[https://mail.google.com/], geçersiz=[gmail.readonly]}"}
-- veya onay ekranı URL'sinde --
hata=geçersiz_kapsam&hata_açıklaması=İstenen+bazı+kapsamlar+geçersizdi
Sebep
İki yaygın kök neden: (1) kapsam değeri kısa bir ad gibidir gmail.yalnızcaoku tam URL yerine https://www.googleapis.com/auth/gmail.readonly, ya da (2) Google Cloud projesinde Gmail API'sinin (veya kapsadığınız başka bir Google API'sinin) etkinleştirilmemiş olması.
Gmail kapsamları ve doğru URL'leri
| Kapsam URL'si (tam URL'yi kullanın) | Ne sağlar | Tip |
|---|---|---|
| https://www.googleapis.com/auth/gmail.readonly | Tüm mesajları ve dizileri oku | Hassas |
| https://www.googleapis.com/auth/gmail.send | Kullanıcı adına e-posta gönder | Hassas |
| https://www.googleapis.com/auth/gmail.modify | Oku, oluştur, gönder, sil dizileri | Hassas |
| https://mail.google.com/ | Tam posta kutusu erişimi (IMAP/SMTP) | Kısıtlı |
| https://www.googleapis.com/auth/userinfo.email | Kullanıcının sadece e-posta adresini oku | Temel |
Düzelt
https://www.googleapis.com/auth/ veya https://mail.google.com/kısaltma kullanmayın gmail.yalnızcaoku.
"Google bu uygulamayı doğrulamadı" ve 100 kullanıcı sınırı
Doğrulanmamış bir uygulama hassas veya kısıtlı erişim alanları talep ettiğinde, "Google bu uygulamayı doğrulamadı" uyarı ekranı görüntülenir. Kullanıcılar "Gelişmiş" seçeneğine ve ardından "[uygulama adı]'na git (güvenli değil)" seçeneğine tıklayarak devam edebilirler; ancak bu durum üretim ortamı için uygun değildir. Ayrıca, Test modunda uygulamanızın kullanıcı sayısı toplamda 100 tekil kullanıcı ile sınırlıdır.
Sebep
Uygulamanız Hassas kapsamlar (örneğin gmail.yalnızcaoku veya gmail.gönder), doğrulama incelemesini tamamlayana kadar Google bu uyarı ekranını tüm kullanıcılara gösterir. Kısıtlı kapsamlar için ayrıca bir üçüncü taraf güvenlik denetiminden (CASA Tier 2) geçmeniz gerekir.
"Test" yayınlama durumundayken, bu uyarı ekranı test kullanıcıları için de görüntülenir ve izin verilen toplam test kullanıcısı sayısı 100 ile sınırlıdır. Test kullanıcıları için oluşturulan erişim belirteçleri 7 gün sonra geçerliliğini yitirir.
Düzelt
https://mail.google.com/): ayrıca bir CASA Seviye 2 Google tarafından onaylanmış bir denetçi tarafından yapılan güvenlik değerlendirmesi.
OAuth projesi zaten sertifikalı olduğunda bu hatalar kaybolur
"Google bu uygulamayı doğrulamadı" ekranı, 100 kullanıcı sınırı ve Test modunda 7 günlük jeton geçerlilik süresi, hepsi şu durumun belirtileridir: Kendi Google Cloud projenizi oluşturmak ve yönetmek. Bağımsız bir teknik aracı, harekete geçen her yetkili kullanıcı adına - ve CASA Tier 2 sertifikasını çoktan tamamlamış olması - bu yükün tamamını sizin omuzlarınızdan alır. Kullanıcılarınız tek seferlik yetkilendirme yapar; token yaşam döngüsü, kapsam uyumu ve yeniden doğrulama işlemleri platform düzeyinde yürütülür.
Bu, Google'ın güvenlik incelemesini atlatmaya yönelik bir geçici çözüm değildir. Unipile, CASA Tier 2 sertifikasını bağımsız olarak almıştır ve Google ile herhangi bir bağlantısı bulunmamakta, Google tarafından onaylanmamakta veya desteklenmemektedir.
Zaten sertifikalandırılmış Google OAuth'u kullanınBu tür Google OAuth hatalarının tamamını nasıl önleyebilirsiniz?
Rehberdeki 7 Google OAuth hatasının tamamına baktığımızda bir örüntü ortaya çıkıyor. Her biri aynı kökten kaynaklanıyor: Kendi Google Cloud projenizi ve OAuth yapılandırmanızı manuel olarak yönetmek. Bu Google OAuth hataları rastgele değil; doğrulanmamış bir OAuth projesine sahip olmanın yapısal sonuçlarıdırlar; yönlendirme URI'si uyumsuzluklarından jeton döndürme başarısızlıklarına, 100 kullanıcı sınırına ve onay ekranı reddetmelerine kadar.
Başka bir yol var. Kullanarak bağımsız teknik aracı harekete geçen her yetkili kullanıcı adına - Google'ın doğrulama incelemesini ve CASA Tier 2 güvenlik sertifikasını halihazırda tamamlamış bir çözüm - bu tür tüm arıza durumlarının yükünü omuzlarınızdan alır. Aşağıdaki karşılaştırma, hangi hataların ortadan kalktığını ve bunların yerine hangi altyapı işlerinin Unipile tarafından üstlenildiğini net bir şekilde göstermektedir. Bkz. Unipile Google OAuth belgeleri tam entegrasyon kılavuzu için.
Bu rehberdeki her hata: düzeltmeyi kim sahip?
Yukarıda ele alınan 7 Google OAuth hatası ortak bir kökü paylaşır: Google Cloud projesine siz sahip olduğunuz için, her başarısızlık moduna da siz sahipsiniz. Bunun pratikte ne anlama geldiğine yan yana bir göz atalım.
Temel fark: Unipile sizin adınıza aracılık ettiği bağlantılar için Google'ın güvenlik incelemesini ve CASA Seviye 2 değerlendirmesini zaten tamamladı. Bu, Google'ın güvenlik incelemesi için bir geçici çözüm değildir - Unipile zaten onu geçti. Kullanıcılarınız temiz bir onay ekranı görür ( "doğrulanmamış uygulama" uyarısı olmaz), uygulamanız hemen yayınlanır ve üretim tarihi baskısı olmadan kendi Google Cloud doğrulamalarınızı paralel olarak yürütebilirsiniz.
Uyumluluk notu: Unipile bir bağımsız teknik aracı, Google ile bağlantısı olmayan, Google tarafından onaylanmış veya sponsorluğu yapılmış değildir. Unipile'ın Google OAuth istemcisi CASA Seviye 2 sertifikalıdır ve kullanıcılarınızın Unipile aracılığıyla kurulan bağlantılarda "doğrulanmamış uygulama" uyarısı olmadan Gmail erişimini yetkilendirmesini sağlar. Bu, Google'ın güvenlik incelemesi için bir geçici çözüm değildir - Unipile zaten aracılık ettiği bağlantılar için bunu geçti. her yetkili kullanıcı adına. Kullanıcılar Google Hesabı izinleri sayfasından istedikleri zaman erişimi iptal edebilirler.
Google OAuth Hataları SSS
Google OAuth hataları ve Gmail API hataları hakkında en sık sorulan soruların yanıtları, jeton yaşam döngüsü, yönetici politikaları, yönlendirme URI'leri ve Google Cloud Console yapılandırmasını kapsar.
yönetici_politika_uygulandı Google Workspace süper yöneticisinin uygulamanızı veya talep ettiği belirli OAuth kapsamlarının o kuruluşta kullanıcılar tarafından yetkilendirilmesini engellediği anlamına gelir. Bu, kodunuzdaki bir hata değil, organizasyonel bir erişim kontrol politikasıdır. Düzeltme, Google Yönetici Konsolu'ndaki Workspace süper yöneticisinin işlem yapmasını gerektirir. Güvenlik > API denetimleri > Üçüncü Taraf Uygulama Erişimi Yönetimi.
Hayır. Normal bir kullanıcı admin_policy_enforced'ı düzeltemez. Yalnızca Google Workspace üst düzey yönetici Bu hatayı, uygulamayı Yönetici konsolunda Güvenilir olarak işaretleyerek çözebilirsiniz. Etkilenen kullanıcının BT yöneticisiyle veya Workspace süper yöneticisiyle iletişime geçerek belirli OAuth uygulamasının onaylı listeye eklenmesini istemesi gerekir.
Bu yeniden_yönlendirme_urf_eşleşmiyor localhost'ta, Google Cloud Console'da kaydettiğiniz URI'nin yerel geliştirme sunucunuzun kullandığı URI ile tam olarak eşleşmemesi durumunda meydana gelir. Örneğin, kaydetmek http://localhost:3000/callback ancak 3001 numaralı bağlantı noktasında çalıştırılması veya sonundaki eğik çizgiyi unutmak. Google izin verir http:// sadece https://) localhost URI'leri için. Yerel sunucunuzun kullandığı tam URI'yi, doğru bağlantı noktası numarası dahil olmak üzere kaydedin.
Hayır. Yetkili JavaScript kaynakları ve Yetkili yönlendirme URI'leri iki ayrı alandır. JavaScript kaynakları yalnızca tarayıcı tarafı OAuth akışları için kullanılır. Düzeltmek için yeniden_yönlendirme_urf_eşleşmiyor, e URI'yi eklemelisiniz Yetkili yeniden yönlendirme URI'leri alan, JavaScript kökenlerine değil.
Tek bir Google OAuth 2.0 istemcisi şunları içerebilir: 100 Yetkilendirilmiş Yönlendirme URI'leri kaydedildi. Bu, aynı istemci içinde farklı ortamlar (yerel geliştirme, hazırlık, üretim) ve farklı geri arama yolları için URI'ler kaydetmenize olanak tanır.
Eğer uygulamanız Yayınlanma durumunu test etme, Google yinelenen jetonlar süresi doluyor 7 gün kullanımına bakılmaksızın. Bu, doğrulanmamış uygulamalar için tasarım gereğidir. Tıklayarak Üretim durumuna taşıyın Uygulamayı Yayınla OAuth onay ekranı sayfasında uzun ömürlü belirteçler almak için. Üretim ortamında, yenileme belirteçleri, kullanıcınız uygulamayı en az altı ayda bir kullandığı sürece geçerlidir. Yönetilen bir alternatif için, lütfen sitemizi ziyaret edin Yönetilen Gmail API çözümü.
Google, kullanılmamış yenileme jetonlarını iptal eder 6 ay (yaklaşık 180 gün). Jetonlar şu durumlarda da geçersiz kılınır: kullanıcı Google hesap şifresini değiştirirse, kullanıcı Google Hesabı güvenlik ayarlarında uygulama erişimini iptal ederse, farklı kapsamlarla yeniden yetkilendirme yaparsanız veya tek bir kullanıcı-uygulama çifti için toplam yenileme jeton sayısı 50'yi aşarsa (en eskiler önce geçersiz kılınır). Sağlam e-posta entegrasyonları oluşturma hakkında tam bilgi için bkz. E-posta API kılavuzu.
Google, 2024'te Bulut Konsolu'nu yeniden tasarladı. OAuth onay ekranı yapılandırması artık içeride API'ler ve Hizmetler > OAuth'a genel bakış. Tıkla Uygulamayı Düzenle veya Markalaşma, Kitle ve Kapsam sekmelerini kullanın. Ayrıca kontrol edin: ihtiyacınız var Editör veya Sahip rolü projede (Görüntüleyici forma erişemiyor) ve doğru projede olduğunuzdan emin olun; bunun için konsolun üst kısmındaki proje seçiciyi kullanın.
Burada listelenmeyen bir Google OAuth hatasıyla mı karşılaşıyorsunuz? Hata ayıklamayı atlayın ve Unipile'ın Gmail OAuth'u sizin için halletmesine izin verin.
Başla