Firebase GoogleSignIn Error Code 10

Selamlar.

Bugün Firebase üzerinden Google ile giriş yaparken en çok alınan hatayı çözüme kavuşturacağız.

Öncelikle bu hatayı neden aldığımıza bir bakalım.Firebase ile bağlantı kurarken SHA-1 anahtarını projemize dahil ediyoruz.Ama bu dahil ettiğimiz anahtar debug modda aldığımız anahtar.Biz android studio üzerinden uygulama geliştirirken uygulamamızı telefonda debug modda çalıştırıyoruz.Ama apk çıkarttığımızda ve bunu play store üzerinden paylaştığımızda Firebase bizden release anahtarını istiyor.Oysa biz debug anahtarını ekledik.Bunun çözümünde de android studiodan release anahtarını alıp firebaseye eklememiz gerekiyor.

Bunun içinde aşağıdaki adımları izliyoruz.

 

Anahtar oluşturma
  • Release key alabilmemiz için anahtar key oluşturmamız gerekiyor.Yukarıdaki adımları izleyelim ve sonraki aşamaya geçelim.

 

 

  • Resimde belirttiğim gibi Anahtar keyin kaydedileceği yeri,şifreleri ve Alias ismini bir yere not alıyoruz.Bunlar Sha1 anahtarı oluştururken lazım olacak.

 

 

  • Play storeye atmamız için gereken .jsk uzantılı anahtarımız ve apk dosyamız oluşturuldu.Bizim ilgileneceğimiz kısım .jks uzantılı anahtar dosyamız.

 

  • Burada imzalanmış anahtarı açmamız gerekiyor.Adımları takip edelim

 

 

  • Resimde belirttiğim gibi Anahtar keyin kaydedileceği yeri,şifreleri ve Alias ismini bir yere not almıştık. O bilgileri aynı şekilde buraya da giriyoruz.Bu bilgiler sayesinde release anahtarına ulaşacağız.
  • Daha sonrada Apply diyerek bitiriyoruz.

 

 

  • Şimdiyse sırada release anahtarını alabilmek için ayarlama yapmakta.
  • Debbuggable = true
  • Signing Config = config olan
  • Minify Enabled = true
  • Bunları yaptıktan sonra Apply diyerek çıkıyoruz.

 

 

 

  • Eğer build.gradle içerisinde bilgilerinizi görüyorsanız başarılı oldunuz demektir.Şimdiyse sıra release anahtarını almakta.
  • Debug anahtarını nasıl alıyorsak release anahtarını aynı şekilde alacağız.

 

 

  • Nasıl ki debug modda SHA1 keyi alıyorsak aynı şekilde release keyinide alacağız.Ama burada önemli kısım Variant : release ve Config : config olan bölümdeki SHA1 keyini almak.
  • Bu keyi kopyalıyoruz.

 

 

  • Release anahtarını aldıktan sonra firebase proje ayarlarından parmak izi ekleme kısmına ekliyoruz.
  • Daha sonra google-services.json dosyayı güncellenmiş oluyor.
  • Bu yüzden bu dosyayı indirip android studyoya atmamız gerekiyor (güncellememiz gerekiyor)
  • Herşeyi doğru yaptıysanız şimdi sorunsuz bir şekilde google girişiniz yapılacaktır.

 

Eee herşey tamamlandı.Ama bir sorun var.

Şifrelerimiz herkese açık.Bunu nasıl çözeceğiz?

 

Bir ekiple çalışıyorsak veya kodumuzu açık bir şekilde kullanıyorsak, bu hassas bilgileri derleme dosyalarının dışına taşımalıyız ki böylece başkaları kolayca erişemesin.

Güvenli bilgileri depolamak için ayrı bir özellikler dosyası oluşturmalıyız ve bilgileri buradan çekmeliyiz.

Peki bunu nasıl oluşturacağız derseniz de buyrun aşağıya geçelim derim…

 

 

  • Evet bu gifte oluşturduğumuz anahtar.properties dosyasıyla imza dosyamızı açmak için gereken anahtarları tutacağız. Bunu oluşturma sebebimizde projemizi arkadaşlarımızla paylaşırken veya herhangi bir paylaşım sitesine yüklerken imza dosyamızın da güvenliğini sağlamak.

 

 

  • storeFile dediğimiz kavram oluşturduğumuz imza dosyasının konumunu tutuyor.Diğerlerini zaten biliyoruz 🙂

NOT : googledeneme isimli dosya bizim anahtar dosyamız.Burada .jks uzantısını eklemeyi unutmuşum siz unutmayın. (googledeneme.jks olacak)

Ayrıca bu bilgileri hızlıca almak isterseniz build.gradle(Module : app) dosyasından alabilirsiniz.

 

 

 

  • App seviye build.gradle dosyasına şu kodları ekliyoruz.

 

 
 
def keystorePropertiesFile = rootProject.file("anahtar.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

 

 
 
keyAlias keystoreProperties['keyAlias']
 keyPassword keystoreProperties['keyPassword']
 storeFile file(keystoreProperties['storeFile'])
 storePassword keystoreProperties['storePassword']

 

  • Evet anahtar güvenliğimiz de sağlamış olduk.Artık projeyi arkadaşlarımızla paylaşırken veya açık bir yere upload ederken anahtar.properties dosyasını projeden çıkartıp öyle paylaşmamız lazım. Böylece diğer kişiler imza bilgilerimize erişemeyecektir.

 

Not : signingConfigs’in altında bulunan config ismi benim en baştaki gifte yeni bir signingConfigs oluştururken verdiğim isimdir.Eğer siz başka bir isim verdiyseniz config yerine onu görmeniz normaldir.

 

Not 2 : Üstte de belirttim ama yinelemekte fayda var.Projenizi paylaşırken anahtar.properties dosyasını          paylaşmayın. İmza dosyanızın güvenliği için bunu yapmayın.

 

Kaynakça

  1. https://developer.android.com/studio/publish/app-signing.html#sign-auto
  2. https://code.luasoftware.com/tutorials/android/android-studio-build-debug-apk-with-release-key/
  3. https://medium.com/@geocohn/keeping-your-android-projects-secrets-secret-393b8855765d