Kısa Cevap
Google Sign-In hata 10, yani DEVELOPER_ERROR, Android uygulamasının yanlış yapılandırıldığı anlamına gelir. Giriş yerelde çalışıp Play kapalı testinde başarısız oluyorsa, Play’den kurulan uygulamanın imzalama SHA-1’inin ve nihai paket adının doğru Firebase veya Google Cloud projesinde kayıtlı olduğunu, ayrıca kullandığınız serverClientId ya da webClientId değerinin Android istemci kimliği değil, Web uygulaması istemci kimliği olduğunu kontrol edin. Ardından Google Play’den kurulan derlemeyle yeniden test edin.
Kurulumunuzu seçin
SHA-1’i zaten eklediniz mi? Sırada neyi kontrol etmeniz gerektiğine geçin.
Bu yazının kapsamı tek bir hatadır: Google Play’in teslim ettiği kopyada bozulan yerel (native) Google girişi. Yazı bu hatayı benzer görünen diğer hatalardan ayırır, ardından framework’leri, diğer giriş sağlayıcılarını ve test kullanıcılarının neyi bildirmesi gerektiğini ele alır. Burada atıfta bulunulan her Google sayfası 16 Ekim 2026 tarihinde kontrol edildi ve topluluk bildirimleri ayrıca belirtildi. Kaynaklar sonda listelenmiştir.
Bu sayfada
Play derlemesinde Google Sign-In’i düzeltin
Test kullanıcılarınızın kurduğu uygulamayı, onun için kayıtlı paket adı ve imzalama SHA-1’i ile eşleştirin. Bu adımları sırayla uygulayın; Firebase ve Google Cloud yolları ardından gelir.
Hangi kopyanın başarısız olduğunu doğrulayın
Test kullanıcısının uygulamayı Google Play’deki kapalı testinizden kurduğunu kontrol edin ve elindeki sürümü not edin. Ardından o derlemenin nihai uygulama kimliğini (application ID) not edin. Android’in derleme rehberine göre uygulama kimliğiniz applicationId özelliğiyle tanımlanır; bu değer kaynak kodunuzdaki namespace’ten farklı olabilir veya bir derleme varyantında (flavor) sonek alabilir. Test kullanıcısı uygulamayı hiç kuramıyorsa bu farklı bir sorundur: bir uygulamanın test kullanıcıları için neden kullanılamadığına bakın.
Play uygulama imzalamayı açın
Play Console’da uygulamayı açın ve Protected with Play bölümüne gidin. Google, uygulama imzalamayı Mayıs 2026’da buraya taşıdı ve kendi yardım sayfası bir sonraki adımı iki farklı şekilde adlandırıyor (aşağıdaki tablo). Her iki yol da aynı sayfaya çıkar.
| Google’ın yazdığı şekliyle yol | Google’ın bunu kullandığı yer | Orada neyi açmalı |
|---|---|---|
| Protected with Play > Play Store distribution > Go to Play app signing | Google’ın bunu kullandığı yerPlay Console Yardım, Play Uygulama İmzalama’yı kullanma, API kaydı bölümü | Orada neyi açmalıApp signing key certificate, ardından SHA-1 değeri |
| Protected with Play > Play Store protection > Manage Play app signing | Google’ın bunu kullandığı yerGoogle Play’in Mayıs 2026 güncelleme notları ve aynı yardım sayfasının başka bir bölümü | Orada neyi açmalıAynı sayfa; menü etiketleri hesaplar arasında farklılık gösterebilir |
Uygulama imzalama anahtarının SHA-1’ini kopyalayın
Yükleme anahtarı sertifikasını değil, App signing key certificate (uygulama imzalama anahtarı sertifikası) bölümünü açın ve oradaki SHA-1’i kopyalayın. Play, uygulamanız için birden fazla imzalama anahtarı listeliyorsa geçerli olan her parmak izini kaydedin (bkz. birden fazla imzalama sertifikası). Mevcut debug ve yerel parmak izlerinizi silmeyin, Play parmak izlerini onların yanına ekleyin. Girişi düzeltmek için imzalama anahtarınızı değiştirmeyin (rotate etmeyin).
Uygulamanızın giriş yaptığı yerde kaydedin
Uygulamanız hangisini kullanıyorsa Firebase yolunu veya Google Cloud yolunu izleyin ve uygulamanızın içindeki istemci kimliklerini oluşturan projenin aynısını kullanın.
Kurulu Play derlemesini yeniden test edin
Firebase veya Google Cloud’da yalnızca bir kaydı değiştirdiyseniz, yeni bir şey derlemeden önce Play’den zaten kurulmuş kopyayla tekrar deneyin; geliştiriciler, yalnızca kayıttan oluşan bir düzeltmenin yeni bir yükleme yapmadan çalıştığını bildirmiştir. Pakete gömülü yapılandırmayı, bir istemci kimliğini, kodu veya bir bağımlılığı değiştirdiyseniz aynı kapalı test kanalına yeni bir derleme yükleyin ve onu test edin. Google, yeni bir parmak izinin devreye girmesi için sabit bir süre yayınlamıyor; bu yüzden belirli bir saat beklemek yerine yeniden test edin.
Play sertifikasını Firebase’e ekleyin
Play imzalama parmak izini eklemeden önce eşleşen Android uygulamasını seçin. Adımlar Firebase’in parmak izi yardımını ve Google ile giriş rehberini izler.
- Firebase konsolunda uygulamanızın kullandığı projeyi açın, ardından Project settings > General bölümüne gidin.
- Your apps altında, paket adı başarısız derlemeyle eşleşen Android uygulamasını seçin.
- Add fingerprint seçeneğine tıklayın, Play uygulama imzalama SHA-1’ini yapıştırın ve kaydedin. Mevcut parmak izlerinin yerine koymak yerine onların yanına ekleyin.
- Authentication > Sign-in method altında Google’ın etkin olduğunu doğrulayın.
- Firebase sizden güncellenmiş bir
google-services.jsonindirmenizi isterse projenizdeki dosyayı değiştirin. Firebase’e göre bu dosya “contains the OAuth client information required for Google sign-in” (Google ile giriş için gereken OAuth istemci bilgilerini içerir); dolayısıyla değişen bir dosya yeni bir derleme demektir. Dosyanın projesinin ve paketinin başarısız uygulamayla eşleştiğini kontrol edin.
SHA-256’yı yalnızca belirli bir Firebase hizmeti istediğinde ekleyin. Örneğin telefonla kimlik doğrulama, Play Integrity yolu için SHA-256 kullanır; Google Sign-In ise SHA-1’e dayanır.
Google Cloud’u Firebase olmadan yapılandırın
İki OAuth istemcisi iki farklı iş görür. Android istemcisi uygulamanızı kaydeder; Web istemci kimliği ise token isteğinizin kullandığı kimliktir.
| İstemci türü | Ne içerir | Nerede kullanılır |
|---|---|---|
| Android | Ne içerirPaket adınız ve imzalama sertifikasının SHA-1’i | Nerede kullanılırYerel uygulama kimliğini kaydeder. Bu istemci kimliğini serverClientId içine yapıştırmazsınız. |
| Web uygulaması | Ne içerirWeb istemci kimliği | Nerede kullanılırToken isteğinizdeki serverClientId veya webClientId ve backend’inizin kabul ettiği audience değeri. Google’ın Sign in with Google codelab’i bunu “as the backend client for the Google Sign-in service” (Google Sign-in hizmeti için backend istemcisi olarak) çalışan istemci diye tanımlar. |
- İstemci kimliklerinizi oluşturan projeyi seçin, ardından Google Auth platform > Clients bölümünü açın (Google Cloud yardımı).
- Yeni bir istemci oluşturmadan önce bu paket adı ve SHA-1 ile mevcut bir Android istemcisi olup olmadığına bakın.
- Yoksa Create Client seçeneğini seçin, Application type değerini Android yapın, bir ad, paket adı ve Play uygulama imzalama SHA-1’ini girin, ardından Create deyin. Android formunda bir SHA-1 alanı vardır; SHA-256 oraya girilmez.
- İhtiyacınız olan her paket ve sertifika çiftini kaydedin; örneğin debug, yerel release ve Play.
- Token isteği için Web istemcisini yerinde bırakın ve uygulamanın içine asla bir istemci gizli anahtarı (client secret) koymayın.
Onarımı kanıtlayın
Tek bir başarılı giriş, sürümün düzeldiğini kanıtlamaz. Bu kontrol listesi bir Google kuralı değil, önerdiğimiz kabul testidir; son satır önemlidir, çünkü bir geliştiricinin girişi bir kez başarılı olmuş ama bir sonraki girişte yine başarısız olmuştu: tek bir kontrolün kaçıracağı bir oturum sorunu.
| Kontrol | Başarılı sayılma kanıtı | Başarısız olursa |
|---|---|---|
| Doğru uygulama ve sürüm | Başarılı sayılma kanıtıTest kullanıcısı, amaçlanan Play kurulumunu ve derlemeyi doğrular | Başarısız olursaÖnce sürüm veya kanal teslimatı sorununu çözün |
| İlk giriş | Başarılı sayılma kanıtıBir hesap seçmek, oturumu açık bir uygulamaya geri döndürür | Başarısız olursaTam istisnayı (exception) kaydedin ve aşağıdaki hata tablosunu kullanın |
| Korumalı özellik | Başarılı sayılma kanıtıTest kullanıcısı, giriş gerektiren bir özelliği kullanabilir | Başarısız olursaUygulamanın ve backend’in token işleyişini inceleyin |
| Çıkış yapıp yeniden giriş | Başarılı sayılma kanıtıİkinci giriş, yeniden kurulum gerekmeden çalışır | Başarısız olursaOturum ve sağlayıcıdan çıkış işleyişini araştırın |
| Daha önce etkilenen cihaz | Başarılı sayılma kanıtıAynı test kullanıcısı ve cihaz artık başarılı olur | Başarısız olursaSertifikayı, işletim sistemini, hesabı ve gerçek derlemeyi karşılaştırın |
| Testin sürekliliği | Başarılı sayılma kanıtıTest kullanıcısı hâlâ teste kayıtlı ve düzeltmeyi kayda geçirdiniz | Başarısız olursaKayıt sorununu girişten ayrı olarak düzeltin |
Giriş neden debug’da çalışıp kapalı testte başarısız oluyor?
Google Play üzerinden kurulan uygulamanın imzalayıcısı, yerelde kurduğunuz APK’nınkinden farklı olabilir. Google’ın istemci kimlik doğrulama rehberi şunu belirtir: “Android Studio automatically signs your app with a debug certificate.” (Android Studio uygulamanızı otomatik olarak bir debug sertifikasıyla imzalar.) Kendi derlediğiniz bir release, o varyant için hangi anahtar yapılandırıldıysa onu kullanır. Play App Signing ile yükleme anahtarınız yüklediğiniz paketi imzalar, Google ise test kullanıcılarınıza ulaşan APK’ları uygulama imzalama anahtarıyla imzalar.
Bu anahtarların rolleri farklıdır, ancak değerleri her zaman farklı değildir: kendi imzalama anahtarınızı sağlayabilirsiniz ve bazı kurulumlar iki rol için tek bir anahtar kullanır. Anahtar etiketlerini değil, gerçek parmak izlerini karşılaştırın.
| Kurulu kopya | Kontrol edilecek sertifika | İlk adım |
|---|---|---|
| Play App Signing ile Play’den dahili test, kapalı test, açık test veya üretim kurulumu | Kontrol edilecek sertifikaProtected with Play altında bulunan Play uygulama imzalama sertifikası veya sertifikaları | İlk adımGeçerli her Play SHA-1’ini kaydedin |
| Android Studio debug çalıştırması | Kontrol edilecek sertifikaO makinenin debug sertifikası | İlk adımO SHA-1’i eşleşen uygulama kimliği için kaydedin |
| Kendi makinenizde derlenen release APK | Kontrol edilecek sertifikaO release varyantı için yapılandırılmış sertifika | İlk adım“Release” ifadesinin Google’ın imzalayıcısı anlamına geldiğini varsaymayın |
| Dahili uygulama paylaşımı bağlantısı | Kontrol edilecek sertifikaDahili uygulama paylaşımının kendi test sertifikası | İlk adımTest kullanıcıları bu yolu kullanıyorsa onu ayrıca kaydedin |
Dahili uygulama paylaşımı, dahili test değildir
Google’ın dahili uygulama paylaşımı yardım sayfası şöyle der: “Every APK is resigned with this test certificate.” (Her APK bu test sertifikasıyla yeniden imzalanır.) Sertifikayı Test and release > Internal testing > Internal app sharing > Uploaders and testers > Internal test certificate altında bulabilirsiniz. Dahili test ve kapalı test kanalları ise bunun yerine Play uygulama imzalama anahtarınızı kullanır.
Parmak izlerini kendiniz okuyun
Kendi makinenizdeki derlemeler için Gradle imzalama raporu her varyantın SHA-1 ve SHA-256 değerlerini yazdırır; keytool ise debug keystore’u doğrudan okur (istendiğinde keystore şifresini girin):
./gradlew signingReport
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Yerel bir imzalama raporu, Play kopyasını neyin imzaladığını söylemez. Başarısız derlemenin kendisini kontrol etmek için onu kapalı testten bir cihaza kurun, adb ile çekin ve sertifikalarını apksigner ile yazdırın; Google bu aracı “information about the APK's signing certificates” (APK’nın imzalama sertifikalarına ilişkin bilgileri) gösteren araç olarak belgeler. Paket adını değiştirin ve ilk komutun yazdırdığı yolu kullanın:
adb shell pm path com.example.app
adb pull /data/app/.../base.apk failing-play.apk
apksigner verify --print-certs failing-play.apk
SHA-1’i ekledim ama hâlâ başarısız oluyor
Başka ayarları değiştirmeden önce başarısız APK’nın sertifikasını, nihai uygulama kimliğini ve istemci kimliklerini karşılaştırın. Bu basamakları yukarıdan aşağıya izleyin; her satır bir katmanı eler.
| Kontrol | Neyi karşılaştırmalı | Karar |
|---|---|---|
| 1. Kurulu kopya ve kanal | Neyi karşılaştırmalıTest kullanıcısının gerçek Play kurulumunu, test etmek istediğiniz sürümle | KararYerel bir imzalama raporu, Play imzalayıcısının kanıtı değildir |
| 2. Sertifika | Neyi karşılaştırmalıBaşarısız Play APK’sında çalıştırılan apksigner verify --print-certs çıktısını, kaydettiğiniz değerlerle |
KararGereken her imzalayıcıyı kaydedin; hâlâ kurulu kullanıcılara hizmet eden eski kayıtları koruyun |
| 3. Nihai uygulama kimliği | Neyi karşılaştırmalıDerlenen varyantın flavor sonekleri dahil applicationId değerini, kayıtlı paketle | KararKaynak kodundaki namespace geçerli değildir |
| 4. Proje ve Web istemcisi | Neyi karşılaştırmalıRelease derlemenizin ve backend’inizin gerçekte kullandığı proje ve Web istemci kimliği | KararBuradaki bir yazım hatası, parmak izleri doğru olsa bile girişi bozar |
| 5. Sağlayıcı ve istemciler mevcut | Neyi karşılaştırmalıSağlayıcı olarak etkinleştirilmiş Google ve arkasındaki Android ve Web istemcileri | KararÇifti başka bir proje sahipleniyorsa aşağıdaki çakışma notuna bakın |
| 6. Hata ailesi | Neyi karşılaştırmalıYerel kod 10, bir Credential Manager iptali, backend’in token’ı reddetmesi veya bir tarayıcı yönlendirme uyuşmazlığı | KararHer biri ayrı bir daldır; hata tablosuna bakın |
| 7. Framework’e özgü release sorunu | Neyi karşılaştırmalıKaynak küçültme (resource shrinking), çözümlenen kütüphane sürümü ve başlatma | KararRastgele sürüm yükseltme veya düşürme yerine değişiklik günlüklerini ve doğrulanmış düzeltmeleri kullanın |
4. satır teorik değil. Eylül 2026’da bildirilen bir Expo vakasında parmak izi eklemek hiçbir şeyi değiştirmedi; çözüm, backend’in kabul ettiği istemci kimliğindeki bir yazım hatasını düzeltmekti.
Birden fazla imzalama sertifikası veya yükseltilmiş anahtarlar
Tek bir uygulamanın birden fazla imzalama kimliğini kaydetmesi gerekebilir. Google’ın güncel Play App Signing yardım sayfası, üç uygulama imzalama anahtarıyla hibrit imzalamayı anlatır ve her birinin parmak izlerini kaydetmenizi ister; imzalama anahtarını yükseltmiş bir uygulamanın da hâlâ eski bir anahtarla imzalanmış kurulumları olabilir. Kurulumlarınızın gerçekte taşıdığı kimlikleri kaydedin ve hâlâ çalışan eski kayıtları silmeyin. Anahtar rotasyonu bu yazının kapsamı dışındadır ve bir giriş düzeltmesi değildir.
Bu paket ve SHA-1 zaten başka bir projeye ait
Firebase’in çakışma yardım sayfası, bir paket adı ve SHA-1 çiftinin “must be unique across all Firebase and Google Cloud projects” (tüm Firebase ve Google Cloud projelerinde benzersiz olması gerektiğini) belirtir. Konsol, parmak izini başka bir proje tuttuğu için reddediyorsa, herhangi bir şeyi silmeden önce o OAuth istemcisinin hangi projeye ait olduğunu bulun. Google desteği çakışmanın yerini bulmanıza yardımcı olabilir; tahminle ilerlemek için etkin istemcileri veya projeleri kaldırmayın.
Hata 10, 12500, 12501 veya canceled ile aynı mı?
Hayır. Her başarısız girişi tek bir sorun gibi ele almadan önce tam hatayı ve onu üreten kütüphaneyi okuyun. Google’ın ortak durum kodları referansı DEVELOPER_ERROR = 10 değerini “The application is misconfigured.” (Uygulama yanlış yapılandırılmış.) olarak tanımlar. Aşağıdaki diğer kodlar Google’ın eski play-services-auth 21.6.0 SDK’sından gelir.
| Gördüğünüz | Anlamı | Sonraki adım |
|---|---|---|
ApiException: 10 veya DEVELOPER_ERROR |
AnlamıUygulama yapılandırma hatası | Sonraki adımİmzalayıcıyı, paketi, projeyi ve istemci kimliklerini karşılaştırın |
12500 |
AnlamıSIGN_IN_FAILED: “A non-recoverable sign in failure occurred” (kurtarılamayan bir giriş hatası oluştu) |
Sonraki adımÇevresindeki günlükleri okuyun; bunu hata 10 gibi ele almayın |
12501 |
AnlamıSIGN_IN_CANCELLED: “Sign in action cancelled” (giriş işlemi iptal edildi) |
Sonraki adımKullanıcının iptal edip etmediğini ve bunu hangi API’nin ürettiğini öğrenin |
Credential Manager veya Flutter canceled |
AnlamıGerçek bir iptal veya bir yapılandırma sorunu | Sonraki adımİstisna ayrıntılarını ve kurulumu inceleyin; teşhisten sonra kullanıcının yeni bir deneme başlatmasına izin verin |
NoCredentialException |
AnlamıHiçbir kimlik bilgisi döndürülmedi; bu bir sertifika teşhisi değildir | Sonraki adımKayıtların yanı sıra hesap uygunluğunu ve istek yapılandırmasını da kontrol edin |
| Google token’ı çalışıyor, backend reddediyor | AnlamıGoogle kimlik bilgisini almaktan daha sonraki bir aşama | Sonraki adımBackend’inizin kabul ettiği audience değerini ve istemci kimliklerini kontrol edin |
redirect_uri_mismatch |
AnlamıBir tarayıcı OAuth yönlendirmesi, yetkili bir URI ile eşleşmiyor | Sonraki adımO akış için geri çağırma (callback) yapılandırmasını düzeltin |
| Play bağlantısında “Item not found” (öğe bulunamadı) | AnlamıGiriş değil, bir kurulum veya uygunluk sorunu | Sonraki adımUygulama kullanılamıyor kontrollerini izleyin |
Eski Google Sign-In ve Credential Manager
Google’ın Play services sürüm notları, Google Sign-In API’lerinin play-services-base içinde 16 Nisan 2024’te kullanımdan kaldırıldığını (deprecated) listeler; Google, Credential Manager’a geçişi 11 Eylül 2024’te duyurdu. API’ler daha sonra 26 Ağustos 2026’da play-services-auth 22.0.0’dan ve 17 Eylül 2026’da play-services-base 18.11.0’dan “Removed the APIs related to Google Sign-in.” (Google Sign-in ile ilgili API’ler kaldırıldı.) notuyla çıkarıldı. Bu bir SDK değişikliğidir; zaten kurulu uygulamalar için bir kapanış tarihi belirlemez. Yeni kod ve yükseltmeler Google’ın geçiş rehberini izlemelidir.
İki API farklı şekillerde başarısız olur. Credential Manager’da hata 10 yoktur; sorun giderme rehberi şu uyarıyı yapar: “A high volume of "cancellations" may actually indicate a misconfiguration.” (Çok sayıda "iptal" aslında bir yanlış yapılandırmaya işaret edebilir.) Yani bir iptal, bir yapılandırma hatası da olabilir gerçek bir iptal de; NoCredentialException ise yine farklı bir sinyaldir.
Flutter, React Native, Expo ve Unity kontrolleri
Yukarıdaki yerel kimlik kontrolleri her framework için geçerlidir, ancak kurulum, başlatma ve derleme yapılandırması farklılık gösterir. Framework’ünüze ait yolu ve uygulamanızın gerçekte çözümlediği kütüphane sürümünü kullanın.
| Framework | Özel kontroller | Varsaymayın |
|---|---|---|
| Flutter | Özel kontrollerAndroid uygulaması google_sign_in_android, 7.0.0 sürümünde Credential Manager’a geçti. Web istemci kimliğini serverClientId olarak iletin. 7.2.16 için değişiklik günlüğü “Keeps default_web_client_id resource from being stripped by resource shrinkers” (default_web_client_id kaynağının kaynak küçültücüler tarafından silinmesini önler) der; bu, yalnızca release’te görülen hatalar için önemlidir. |
VarsaymayınHer canceled sonucunun bir SHA sorunu olduğunu veya sürüm düşürmenin evrensel bir çözüm olduğunu. |
| React Native | Özel kontrollerKütüphanenin hangi API’sini kullandığınızı belirleyin, Web istemci kimliğini webClientId olarak iletin ve gerçek applicationId değerini ve başarısız APK’yı kontrol edin. Sorun giderme rehberi “Login does not work when downloading from the Play Store” (Play Store’dan indirildiğinde giriş çalışmıyor) durumunu listeler ve bir yapılandırma kontrol komutu sunar (aşağıda). |
VarsaymayınTakipçideki (issue tracker) kapatılmış bir kaydın bir onarımı kanıtladığını. |
| Expo | Özel kontrollerYerel Google girişi bir development veya custom build gerektirir; Expo rehberi şöyle der: “These libraries can't be used in Expo Go because they require custom native code.” (Bu kütüphaneler özel yerel kod gerektirdiği için Expo Go’da kullanılamaz.) EAS veya yerel imzalama sertifikasını Play uygulama imzalama sertifikasından ayrı tutun. | VarsaymayınExpo Go’nun release akışını yeniden ürettiğini veya yeniden derlemenin yanlış bir backend istemci kimliğini düzelttiğini. |
| Unity | Özel kontrollerFirebase Authentication mı yoksa Unity Authentication mı kullandığınıza karar verin, Google ID token’ını desteklenen platform entegrasyonuyla alın, ardından onu o backend ile takas edin (Firebase’in Unity rehberi). Google’ın eski Unity giriş örneği 19 Nisan 2026’da arşivlendi. | VarsaymayınPlay Games girişinin ve Google hesabıyla girişin aynı entegrasyon olduğunu. |
React Native için kütüphane geliştiricileri, proje kök dizininden çalıştırabileceğiniz bir yapılandırma kontrolü sunar:
npx @react-native-google-signin/config-doctor
Supabase, Facebook, Apple veya Auth0 için ne değişir?
Hangi sertifikanın, istemci kimliğinin veya geri çağırmanın eşleşmesi gerektiğini sağlayıcı ve giriş akışı belirler. Yerel Google girişi için cevap bir Google SHA-1’idir; diğer sağlayıcılar için bu yanlış hash, yanlış biçim veya tamamen ilgisiz olabilir.
| Sağlayıcı veya akış | Neyin eşleşmesi gerekir | Nerede ayarlanır |
|---|---|---|
| Firebase ile yerel Google | Neyin eşleşmesi gerekirKurulu paket ve SHA-1, Web istemcisi, sağlayıcı olarak etkinleştirilmiş Google | Nerede ayarlanırFirebase Project settings parmak izleri ve Authentication |
| Supabase ile yerel Google | Neyin eşleşmesi gerekirYerel Android kimliği ve Web istemci kimliği; Supabase’in rehberi şöyle der: “The Web client ID is the one used in your Android app.” (Android uygulamanızda kullanılan, Web istemci kimliğidir.) | Nerede ayarlanırGoogle Android ve Web istemcileri, ardından Supabase Google sağlayıcı ayarları |
| Supabase tarayıcı OAuth’u | Neyin eşleşmesi gerekirWeb istemcisi, Supabase geri çağırması ve uygulamanızın dönüş bağlantısı | Nerede ayarlanırGoogle’daki yetkili yönlendirme URI’leri ve Supabase yönlendirme ayarları; SHA düzeltmesi burada geçerli değildir |
| Android’de Facebook | Neyin eşleşmesi gerekirİki nokta üst üste ile ayrılmış hex değil, imzalama sertifikasının SHA-1 baytlarından üretilen Base64 anahtar hash’i | Nerede ayarlanırFacebook uygulama ayarları, Android anahtar hash’leri (Expo Facebook rehberinde belgelendiği şekliyle yol) |
| Android’de Apple web girişi | Neyin eşleşmesi gerekirServices ID, alan adı ve dönüş URL’si | Nerede ayarlanırApple’ın Sign in with Apple web yapılandırması; Google’ın DEVELOPER_ERROR mekanizması değil |
| Android’de Firebase üzerinden Apple | Neyin eşleşmesi gerekirApple kurulumu ve uygulamanın SHA-1’i | Nerede ayarlanırFirebase’in Apple rehberi: “Specify your app's SHA-1 fingerprint if you haven't already.” (Henüz yapmadıysanız uygulamanızın SHA-1 parmak izini belirtin.) |
| Android’de Auth0 | Neyin eşleşmesi gerekirİzin verilen geri çağırma URL’leri ve uygulama şeması; kullanılıyorsa app link kimliği | Nerede ayarlanırAuth0 uygulama ayarları; Android SDK readme’si, app link kurulumu için SHA-256 anahtar hash’leri kullanır |
| Firebase telefonla kimlik doğrulama | Neyin eşleşmesi gerekirPlay Integrity için SHA-256, reCAPTCHA yedek yolu için SHA-1 | Nerede ayarlanırFirebase telefonla kimlik doğrulama: Google girişinden ayrı bir akış |
Girişi bir WebView’a taşımayın
Google girişini gömülü bir WebView üzerinden yönlendirmek geçici bir çözüm değildir. Google’ın OAuth 2.0 politikaları, geliştiricilerin “must not direct a Google OAuth 2.0 authorization request to an embedded user-agent” (bir Google OAuth 2.0 yetkilendirme isteğini gömülü bir kullanıcı aracısına yönlendirmemesi gerektiğini) belirtir.
Test kullanıcıları geliştiriciye ne göndermeli?
Faydalı bir rapor, başarısız Play derlemesini ve girişin tam olarak durduğu noktayı belirtir. Bir test kullanıcısı tekrar deneyerek bir OAuth kaydını onaramaz; bu yüzden görev ısrar değil, kanıt toplamaktır. Bu şablonu kopyalayın ve test kullanıcılarınıza gönderin:
Uygulama ve Play test bağlantısı:
Kurulu uygulama sürümü veya derlemesi:
Kurulduğu yer: Play kapalı testi / başka bir yol
Cihaz ve Android sürümü:
Tarih, saat ve saat dilimi:
Tam hata metni veya hassas bilgileri gizlenmiş bir ekran görüntüsü:
Nerede durdu: hesap seçiciden önce / bir hesap seçtikten sonra / uygulamaya döndükten sonra
Başka bir giriş yöntemiyle uygulama açılabildi mi?
Yeniden test sonucu ve sürüm:
Siz sorunu düzeltirken test kullanıcılarından teste kayıtlı kalmalarını isteyin. Asla şifre, OAuth token’ı, özel anahtar veya Play Console erişimi istemeyin. Değişikliğinizden sonra aynı test kullanıcısından giriş gerektiren bir özelliği açmasını, ardından çıkış yapıp yeniden giriş yapmasını ve sürümü ve sonucu kaydetmesini isteyin.
Hata 10, kapalı testimi veya üretim erişimimi etkiler mi?
Bir giriş yapılandırma hatası, test kaydından ayrı bir konudur. Hata 10 bir Play politikası reddetme kodu değildir ve bulduğumuz hiçbir Google kuralı, bu hatanın test kullanıcılarınızın kayıt süresini sıfırladığını söylemiyor. Google’ın test şartları sayfası, kapalı test sırasında uygulamanızı iyileştirmenizi teşvik eder; bu yüzden test kullanıcılarını kayıtlı tutun ve düzeltmeyi aynı kapalı test kanalına gönderin. Bu, yayınlanmış kuralların bir yorumudur, her durumu kapsayan bir vaat değildir.
Bozuk giriş yine de önemlidir. Google Play’in işlevsellik politikası “We don’t allow apps that crash, force close, freeze, or otherwise function abnormally” (çöken, zorla kapanan, donan veya başka şekilde anormal çalışan uygulamalara izin vermiyoruz) der ve bir giriş duvarı, test kullanıcılarının test etmeleri gereken özelliklere ulaşmasını engeller. Üretim erişimi için başvurmadan önce sorunu düzeltin ve inceleme ekibine çalışan giriş bilgileri verin. Bir inceleme sonucu zaten geldiyse Broken Functionality reddine bakın.
Bağlam için: 13 Kasım 2023’ten sonra oluşturulan kişisel geliştirici hesaplarının, o uygulama için üretim erişimine başvurmadan önce aralıksız 14 gün boyunca teste kayıtlı en az 12 test kullanıcısına ihtiyacı vardır. Başvurduktan sonra Google’a göre “Review usually takes seven days or less, but can occasionally take longer.” (İnceleme genellikle 7 gün veya daha kısa sürer ancak bazen daha uzun sürebilir.) Test kullanıcıları sayımda eksik görünüyorsa, girişe dokunmadan önce nasıl davet edildiklerini kontrol edin.
14 gün için gerçek test kullanıcılarına mı ihtiyacınız var?
Test kullanıcıları bir OAuth kaydını düzeltemez, bu yüzden önce girişi çalışır hale getirin. Giriş çalıştığında PrimeTestLab, Play derlemenizi gerçek Android telefonlara kuran ve 14 günün tamamı boyunca teste kayıtlı kalan 12+ gerçek test kullanıcısı sağlar; başlangıç fiyatı $19.99 (artı %5 hizmet bedeli). Testin tamamından sonra Google üretim erişimi vermezse, ücretsiz yeniden test veya tam iade arasında seçim yaparsınız. 12 test kullanıcılı kapalı testin nasıl işlediğini görün.
Sıkça Sorulan Sorular
Google Sign-In neden debug’da çalışıyor ama kapalı testte çalışmıyor?
Debug APK’nız ile Google Play’den indirilen uygulama farklı sertifikalarla imzalanmış olabilir; bu yüzden debug parmak izini kaydetmek Play derlemesini yapılandırmaz. Play uygulama imzalama SHA-1’i ile başlayın, ardından release derlemesinin nihai paket adını ve uygulamanın gerçekte kullandığı istemci kimliklerini kontrol edin.
Play App Signing SHA-1’ini artık nerede bulurum?
Play Console’da uygulamanızın Protected with Play sayfasını açın. Google’ın yardım sayfası önce Play Store distribution, ardından Go to Play app signing adımlarını anlatır; Google’ın diğer güncel metinleri bunlara Play Store protection ve Manage Play app signing der. App signing key certificate bölümünü açın ve SHA-1’i kopyalayın; uygulamanız için gösterilen ek anahtarları da kontrol edin.
Google Sign-In için SHA-1 mi yoksa SHA-256 mı gerekir?
Google’ın Android OAuth istemcisi, uygulamanızı paket adı ve SHA-1 imzalama sertifikası parmak izi ile tanımlar; SHA-256 bu alanın yerini tutmaz. Diğer hizmetlerin kendi ihtiyaçları vardır: Firebase telefonla kimlik doğrulama, Play Integrity için SHA-256 ve reCAPTCHA yedek yolu için SHA-1 kullanır. Her hizmeti, uygulamanızın kullandığı akışa göre yapılandırın.
SHA-1’i zaten ekledim. Sırada neyi kontrol etmeliyim?
Bunun yükleme veya debug anahtarınıza değil, Play’den kurulan uygulamaya ait olduğunu doğrulayın. Ardından nihai uygulama kimliğini, Firebase veya Cloud projesini ve Web istemci kimliğini karşılaştırın. Uygulamanızın birden fazla imzalama sertifikası varsa onları da kontrol edin. Backend’in kabul ettiği istemci kimliğindeki bir yazım hatası, parmak izleri doğru olsa bile girişi bozabilir.
Bir parmak izi ekledikten sonra yeni bir AAB yüklemem gerekir mi?
Her zaman değil. Geliştiriciler, Firebase veya Google Cloud’da yalnızca kayıttan oluşan bir düzeltmenin zaten kurulu uygulamayla çalıştığını bildiriyor. Değişen bir istemci kimliği, yapılandırma dosyası, kod veya bağımlılık ise test kullanıcılarına yeni bir derlemeyle ulaşmalıdır. Neyi değiştirdiğinizi kontrol edin, ardından teşhis koymadan tekrar tekrar derlemek yerine gerçek Play kurulumunu doğrulayın.
Yeni bir parmak izinin çalışması ne kadar sürer?
Google, parmak izine özgü bir yayılma süresi yayınlamıyor ve incelediğimiz geliştirici tartışmaları da böyle bir süre ölçmedi. Doğru yapılandırmayı kaydedin ve tekrar deneyin. Hâlâ başarısız oluyorsa sabit bir saat beklemek yerine kurulu sertifikayı ve istemci ayarlarını doğrulayın, çünkü beklemek bir uyuşmazlığı onarmaz.
İptal etmediğim halde neden canceled yazıyor?
Bazı Credential Manager ve framework entegrasyonları bir yapılandırma veya yetkilendirme sorununu iptal olarak bildirir; ancak bir iptal gerçek de olabilir. İstisna türünü ve mesajını kaydedin, framework’ünüzün sorun giderme rehberine bakın ve ayarları değiştirmeden önce güncel API’yi eski 12501 SIGN_IN_CANCELLED durumundan ayrı tutun.
serverClientId içine koyduğum, Android istemci kimliği mi?
Hayır. Belgelenmiş yerel Google entegrasyonlarında serverClientId veya webClientId, token isteği için kullanılan Web uygulaması OAuth istemcisidir. Android istemcisi ise paketinizi ve imzalama sertifikanızı kaydeder. İkisini de yapılandırın ve istemci kimliklerini rastgele değiştirmek yerine backend’inizin amaçlanan token audience değerini kabul ettiğini doğrulayın.
Hata 10, 14 günlük kapalı testimi yeniden başlatır mı?
Bulduğumuz hiçbir Google kuralı bu hatanın kayıt süresini sıfırladığını söylemiyor ve Google kapalı test sırasında iyileştirmeleri teşvik ediyor; bu yüzden test kullanıcılarını kayıtlı tutun ve mevcut kanalı düzeltin. Bu, uygulamanın hazır olduğu anlamına gelmez: bir giriş duvarı faydalı testi engelleyebilir ve başvurmadan önce düzeltmeniz gereken bir işlevsellik sorunu bırakabilir.
Bir test kullanıcısından bana ne göndermesini istemeliyim?
Kurulu sürümü, Play test bağlantısını, cihazı ve Android sürümünü, tam hatayı ve girişin durduğu adımı isteyin. Hassas bilgileri gizlenmiş bir ekran görüntüsü veya kısa bir kayıt yardımcı olur. Düzeltmenizden sonra aynı test kullanıcısından, hiçbir kimlik bilgisi paylaşmadan, giriş gerektiren bir özelliği kullanmasını, ardından çıkış yapıp yeniden giriş yapmasını isteyin.
Sonuç
Sonuç
Google Sign-In hata 10, uygulamanın yanlış yapılandırıldığı anlamına gelir ve yalnızca Play kopyası başarısız oluyorsa ilk kontrol edilecek şey imzalama sertifikasıdır. Uygulama imzalama anahtarının SHA-1’ini Protected with Play bölümünden kopyalayın, uygulamanızın kullandığı Firebase veya Google Cloud projesinin aynısında derlemenin nihai paket adıyla kaydedin, Web istemci kimliğini serverClientId içinde tutun ve test kullanıcılarınızın kurduğu derlemeyi, ikinci bir giriş dahil, yeniden test edin. Hâlâ başarısız oluyorsa başka bir şeyi değiştirmeden önce kurulu APK’nın sertifikasını, uygulama kimliğini ve istemci kimliklerini karşılaştırın.
Kaynakların kontrol tarihi: 16 Ekim 2026
Play Console ve Firebase menü etiketleri bu sayfadaki en hızlı değişen bilgilerdir. Yukarıdaki bir yol artık konsolunuzla eşleşmiyorsa Play uygulama imzalamayı Protected with Play altında, parmak izlerini ise Firebase Project settings içinde Android uygulamanızın altında arayın.