Google Oturum Açma hatası 12500


107

Google Oturum Açma'yı uygulamama entegre etmeye çalışıyorum. Arka uç sunucum yok, yalnızca oturum açmış Google Hesabı'nın ayrıntılarını uygulamama alıyorum.

İlk önce Google Oturum Açma Örneği'ni kullanarak denedim ancak bir hata aldım (Aşağıdaki yığın izini yazdırmak dışında hiçbir kod değişikliği yapılmadı). Arka uç sunucum olmadığı için SignInActivity örneğini kullandım.

 Exception com.google.android.gms.common.api.ApiException: 12500: 
 at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
 at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
 at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89)     at android.app.Activity.dispatchActivityResult(Activity.java:7010)
 at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
 at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
 at android.app.ActivityThread.-wrap20(ActivityThread.java)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:154)
 at android.app.ActivityThread.main(ActivityThread.java:6316)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

Kod

 public class SignInActivity extends AppCompatActivity implements
         View.OnClickListener {

     private static final String TAG = "SignInActivity";
     private static final int RC_SIGN_IN = 9001;

     private GoogleSignInClient mGoogleSignInClient;
     private TextView mStatusTextView;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         // Views
         mStatusTextView = findViewById(R.id.status);

         // Button listeners
         findViewById(R.id.sign_in_button).setOnClickListener(this);
         findViewById(R.id.sign_out_button).setOnClickListener(this);
         findViewById(R.id.disconnect_button).setOnClickListener(this);

         // [START configure_signin]
         // Configure sign-in to request the user's ID, email address, and basic
         // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                 .requestEmail()
                 .build();
         // [END configure_signin]

         // [START build_client]
         // Build a GoogleSignInClient with the options specified by gso.
         mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
         // [END build_client]

         // [START customize_button]
         // Set the dimensions of the sign-in button.
         SignInButton signInButton = findViewById(R.id.sign_in_button);
         signInButton.setSize(SignInButton.SIZE_STANDARD);
         signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
         // [END customize_button]
     }

     @Override
     public void onStart() {
         super.onStart();

         // [START on_start_sign_in]
         // Check for existing Google Sign In account, if the user is already signed in
         // the GoogleSignInAccount will be non-null.
         GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
         updateUI(account);
         // [END on_start_sign_in]
     }

     // [START onActivityResult]
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

         // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
         if (requestCode == RC_SIGN_IN) {
             // The Task returned from this call is always completed, no need to attach
             // a listener.
             Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
             handleSignInResult(task);
         }
     }
     // [END onActivityResult]

     // [START handleSignInResult]
     private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
         try {
             GoogleSignInAccount account = completedTask.getResult(ApiException.class);

             // Signed in successfully, show authenticated UI.
             updateUI(account);
         } catch (ApiException e) {
             // The ApiException status code indicates the detailed failure reason.
             // Please refer to the GoogleSignInStatusCodes class reference for more information.
             Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
             e.printStackTrace();
             updateUI(null);
         }
     }
     // [END handleSignInResult]

     // [START signIn]
     private void signIn() {
         Intent signInIntent = mGoogleSignInClient.getSignInIntent();
         startActivityForResult(signInIntent, RC_SIGN_IN);
     }
     // [END signIn]

     // [START signOut]
     private void signOut() {
         mGoogleSignInClient.signOut()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END signOut]

     // [START revokeAccess]
     private void revokeAccess() {
         mGoogleSignInClient.revokeAccess()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END revokeAccess]

     private void updateUI(@Nullable GoogleSignInAccount account) {
         if (account != null) {
             mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));

             findViewById(R.id.sign_in_button).setVisibility(View.GONE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
         } else {
             mStatusTextView.setText(R.string.signed_out);

             findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
         }
     }

     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.sign_in_button:
                 signIn();
                 break;
             case R.id.sign_out_button:
                 signOut();
                 break;
             case R.id.disconnect_button:
                 revokeAccess();
                 break;
         }
     }
  }

Okuduklarıma göre, sorunun kaynağı SHA1 Generation olabilir .

Kılavuzun tamamını takip ettim ama görünüşe göre çalışmıyor.

SHA1'i gradle imzalama raporundan kopyaladım

Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047

bunun olası nedeni ne olabilir?

Teşekkürler

Not: Bu olası bir neden olabilir mi?

Google Play services out of date.  Requires 11720000 but found 10932470

Hey, lütfen kodunuzu gönderir misiniz
Dilip

Merhaba @Dilip Kelimenin tam anlamıyla bunu kullandım :) github.com/googlesamples/google-services/tree/master/android/… . Yine de güncellendi
Aaron

1
Öyleyse, aynı hatayı alırsanız veya başka bir şey olur. Bir şey lütfen bir kez daha SHA1 yapın ve uygulamanıza karşı geliştirici konsoluna koyun ve paket adını çapraz kontrol edin ve google-services.json dosyasını indirin ve uygulama seviyesine koyun.
Dilip

Evet @Dilip aynı hatayı alıyorum. Kontrol edilmiş paket adını geçtim. Hatta başka bir anahtar deposu kullanmayı denedim ama sonuç aynı.
Aaron

API anahtarınızı almak için kod değişiklikleri yapmanız gerekir . Ve evet, oyun hizmetlerini güncellemelisiniz
OneCricketeer

Yanıtlar:


38

Google Play Hizmetlerinizi en son sürüme (veya bu durumda 11720000) güncellemeniz yeterlidir. AVD kullanıyorsanız, Nexus 5 ve 5X görüntüler Google Play'i destekler. Öykünücü çalışmaya başladığında, Genişletilmiş Kontroller Menüsü> Google Play'e gidin ve ardından güncelleyin.


Samsung cihazlarında nasıl yapılır?
Pinkesh Darji

7
Benim durumumdaki sorun bu değil. Google Play hizmetleri zaten güncel.
Adam Hurwitz

@ zub0r'ın proje ve gizlilik bağlantıları ile ilgili çözümü doğru cevap olarak kabul edilmelidir.
Adam Hurwitz

Lütfen emülatörde veya görsel stüdyoda genişletilmiş kontroller menüsü nerede?
George Udosen

129

Hata PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500:, null)

Bu 12500 Hatası, proje ayarlarında projenize bir destek e-posta adresi eklenerek çözülebilir . Https://console.firebase.google.com/ bağlantısını açın

Projenizi seçin ve ayarlar sekmesini açın.

Geçerli bir destek e-postası sağlayın ve uygulamanızı şimdi yeniden başlatın.

görüntü açıklamasını buraya girin


11
Teşekkürler dostum! Bu hata oldukça şifreli, buradaki cevaplarda bahsedilen herhangi bir şey anlamına gelebilir. Benim sorunum şuydu :(
Billda

3
Ben geliştirici konsolu belirtilen her şeyi yaptı developers.google.com/identity/sign-in/android/sign-in ve SHA-1 parmak izini koymak için çalışıyor bir gün geçirdikten sonra ve bütün bu sorun oldu. Yardım ettin. Çok teşekkürler!
sınıf Android

Projeniz için SHA1 anahtarı eklemeyi deneyin @RohitSingh
Maddu Swaroop

1
@MadduSwaroop Keşke iki kez olumlu oy kullanmanın bir yolu olsaydı ... teşekkürler efendim
Lefty


46

Firebase proje ayarlarına SHA-1 parmak izlerinin eklenip eklenmediğini kontrol edin. Değilse, SHA-1 parmak izini bulun

https://developers.google.com/android/guides/client-auth

Ayrıca, SHA-1 parmak izini kullanarak serbest bırakma anahtarını bulun

keytool -list -v -keystore <keystore path>

<keystore path>Anahtar deposunun yolu ile kaldırın .

Ardından, firebase proje ayarlarına her iki SHA-1 parmak izini ekleyin.

Not: google-services.json'u yeni parmak izleriyle güncellenmiş google-services.json ile değiştirmeyi unutmayın. Bunun üzerine iki gün kaybettim.

Hata ayıklama sırasında

Android stüdyo , ilk hata ayıklama yapısında otomatik olarak oluşturulur ve uygulamayı imzalamak için kullanır.~/.android/debug.keystore

SHA-1 çalıştırmasını (şifre android) ( doc ) almak için:

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Bu SHA-1at uygulama ayarlarında eklenmelidir firebasehata ayıklama yapı test ederken yetenekleri google işaretinin kullanımına izin vermek.


2
Firebase kullandığından nasıl eminsiniz?
PaulG

Tahmin ettim (kod ve sunucusuz benzerlik). Firebase projesi de GCP konsoluna bağlıdır. GCP kimlik bilgilerinde parmak izlerini de değiştirebiliriz.
Niyas Nazar

ile aynı hata, ancak benim durumumda firebase ile ilgili değildi (kullanmıyorum).
Majed DH

Git console.developers.google.com/apis/credentials SHA anahtarla .Add yeni kimlik (O Kimlik Doğrulama İstemci). (Firebase bunu ateş üssü projelerimiz için otomatik olarak yapar)
Niyas Nazar

Google-services.json dosyası, projenizin içindeki uygulama dizininde bulunabilir. (Bulucu / Dosya Gezgini'ne gidin)
Mehul Tandale

44

 12500 hatası için yalnızca firebase ayarlarında destek gmail eklemeniz gerekir ve hata 10 için resimde gördüğünüz gibi firebase konsoluna ssh parmak izini ekleyin


iyi ve basit cevap, Sadece gmail hesabımı yapılandırdım ve gerisini halleder
Ajeett

"12500 hatası için yalnızca firebase ayarlarında destek gmail'i eklemeniz gerekir ve hata 10 için resimde gördüğünüz gibi firebase konsoluna ssh parmak izi eklemeniz gerekir" Bu gerçekten yardımcı oldu. 12500 alıyordum, SHA1 parmak izi uygulanıyordu ve hala çalışmıyordu. DESTEK E-POSTASI eklemenize yardımcı oldu. Teşekkürler!
sınıf Android

44

Destek e-postası ve ayrıca Google SignIn'in çalışması için tüm proje ve gizlilik bağlantıları gereklidir, aksi takdirde 12500 atar.

Bunu, "OAuth izin ekranı" adlı ikinci sekmenin altındaki https://console.developers.google.com/apis/credentials adresinde ayarlayın - burada yapılandırılması gereken üç bağlantı bulacaksınız.

Firebase kılavuzlarında HERHANGİ BİR YERDE bundan bahsedilmemiştir.


3
Teşekkürler, benim için çalışıyor. Sorunu çözmek için neredeyse bütün
günümü

2
Teşekkürler, gizlilik bağlantılarına 'yetkili alan adlarından' birini ekledim ve her şey çalıştı. Beni birkaç saat deneme yanılma süresinden kurtardın 💌
Coco

Bu cevap kabul edilmelidir. O 2 gün ile başarılı olamadan mücadele ediyorum. Google, kılavuzları güncellemelidir, şimdilik dokümanları yanıltıcıdır, kılavuzları asla çalışmaz ve hata kodu hiçbir şey söylemiyor
user1209216

1
gizlilik bağlantıları nereye eklenir?
Shihab Uddin

4
"OAuth izin ekranı" adlı ikinci sekmede - formun altında üç bağlantınız var
zub0r


18

Bir süre buna sıkışıp kaldım.

Bu adımların gerçekleştirildiğinden emin olun.

  • Doğru SHA anahtarı Firebase Konsolu'na kaydedilir.
  • En son google-service.json dosyasını indirin
  • Ve son ve en önemli Google api'de kimlik bilgileri altında OAuth onayını kaydedin, OAuth Ekranı Bu sorunun çözülmesi uzun sürdü. Ve bundan sonra iyi çalıştı.

6
iyi. 2019 için burada kabul edilen cevap bu olmalıdır. google garip bir şekilde OAuth Onayı
mochadwi

1
Ugh, bunun için başka bir oy. Tamamen benim belirsiz sorunumdu.
easycheese

12

Görünüşe göre Google Play Store SHA1'inizin üzerine yazılmış. Uygulama imzalama altında google play mağazanıza, başlatma panelinize bakın, google play'de ek bir SHA1 eklenip eklenmediğine bakın.

Ve SHA1'i kopyalayın, ilgili yere ekleyin, işi yapacaktır.


1
Aman Tanrım! Bu ipucu için teşekkürler! App Bundles kendi SHA1'ini oluşturdu, bu nedenle yerel olarak kullanılan sürüm anahtarları (APK'lar oluştururken) artık doğru değil.
Jia Tse

Bu şimdiye kadarki en kafa karıştırıcı iş akışıdır. Ama bahşiş için teşekkürler
DarkNeuron

5

Hala benzer bir sorunu olan biri varsa, özel kapsamlar ekliyorsanız, bunun geçerli bir kapsam olduğundan emin olun. Benim durumumda, Facebook kapsamlarını Google kapsamlarıyla karıştırdım ve anlamam biraz zaman aldı!


5

Firebase Authentication kullanıyorum. SHA-1'im doğru bir şekilde gösterildi, istemci kimliği de doğruydu ancak yine de 12500 alıyordum.

Sorunumun proje ayarlarımda Destek e-postasını belirtmemem olduğu ortaya çıktı . (Ayarlar -> Genel sekmesi -> Projeniz (Genel ayarlar) bölümü).


3
Benim için de aynı şey oldu. Google'ın hizmetlerinde ciddi dokümantasyon sorunları var. Bu tür sorunları belgelemelerini veya en azından kullanıcı dostu bir hata göstermelerini diliyorum.
ashish-goel

4

Hatanın Yanlış SHA1'den geldiğini düşünüyorum. Lütfen SHA1'in android stüdyosunda yayınlama ve hata ayıklama modu arasında farklı olduğunu unutmayın. SHA1'i almak için keytool kullanmak yerine, SHA1'i yayınlamak ve hata ayıklamak için android stüdyosunda Gradle project -> Task -> android -> signingReport kullanabilirsiniz (bunu View -> Toolwindow -> gradle menüsünden açabilirsiniz). Bundan sonra, kolay çalışma için, google bulut konsolunda iki SHA1 ile 2 ayrı kimlik bilgisi oluşturmanız gerekir (google sadece SHA1 sürümünü kullanarak 1 oluşturma talimatı verir, geliştirdiğimizde çalışmayacaktır çünkü hata ayıklama SHA1'i kullanır).


4

Firebase konsolunda projenize gidin, Proje Ayarları'nı açın, SHA sertifikası parmak izlerinizi oraya ekleyin. Güncellenen google-services.json dosyasını indirin ve bunu Projeler uygulama klasörünüze ekleyin.

Bu benim için çalıştı.

Firebase konsolu Ekran Görüntüsü


4

Öncelikle uygulamanızı Google geliştirici konsoluna kaydettiğinizden emin olun

Emin ikisine de sahip olun debugve releasesizin Firebase uygulamasında anahtarları. Üretimde bu hata görünüyorsa,SHA-1 release key ateş üssüne uygulamanızı . Geliştirme aşamasında görünüyorsa SHA-1 debug key,.

SHA-1 parmak izi nereye eklenir?

Hata ayıklama / bırakma anahtarını alma:

keytool -exportcert -list -v -alias [your alias] -keystore [path/to/debug or release.keystore]

Güncellemeyi google-services.jsonuygulamanıza indirdiğinizden emin olun .


GoogleSignInResult.getSuccess () 'in yanlış ve 12500 kodunu döndürmesiyle başarısız oluyordum. Sonuçta, OAuth'umu başka biri benim hata ayıklama anahtarım yerine SHA1'iyle kurmuştu. Bu onu düzeltti.
Pervasız

@Reckless Bunun yardımına sevindim!
Denn

2

Benim için sorun, hata ayıklama ile yapılandırılmış uygulamamla bir 'sürüm' İstemci Kimliği kullanmaktı. Sırasıyla her SHA-1'i kullanan bir yayın ve hata ayıklama anahtarınız olduğundan emin olun.


2

Buraya flutter'dan geliyorsanız : Bu, buradaki belgelere göre düzeltmemiz gereken önemli durumlardan biridir: https://pub.dev/packages/google_sign_in görüntü açıklamasını buraya girin

  • Git Google API'leri & sevices
  • Google ile oturum açmayı uygulamak istediğiniz uygulamayı seçin.
  • Ardından APIS ve Hizmetleri Etkinleştir'e tıklayın

görüntü açıklamasını buraya girin

  • Ardından Google Peoples API'sini Arayın

görüntü açıklamasını buraya girin

  • Google People API kartını açın ve etkinleştir'i tıklayın, uygulamanız sorunu çözebilir.

2

Uygulamanız bir arka uç sunucusuyla kimlik doğrulaması yaptığında veya arka uç sunucunuzdan Google API'lerine eriştiğinde, kullanıcının temel profil bilgilerine erişmek için GoogleSignInOptions nesnesini oluşturduğunuzda sunucunuz için oluşturulan OAuth 2.0 istemci kimliğini requestIdToken yöntemine geçirmeniz gerekir. . Ayrıca, API Konsolu'ndaki Kimlik Bilgileri sayfasında bulunan OAuth izin ekranında destek e-postasını göndermeyi unutmayın.


2

Benim durumumda, bu hata oradaydı çünkü android kimlik doğrulaması, arka uç kimlik doğrulamasında android anahtarına gerek olmadığı için kıdemli ekip tarafından kaldırıldı. Dolayısıyla, google girişinde hem Android hem de Web istemcisi anahtarlarına ihtiyaç vardır.


1
Bunun için teşekkürler! Ayrıca Android istemci kimliğimi de sildim çünkü sadece web istemcisi kimliğine ihtiyacımız olduğu için gerekli olmadığını düşündüm.
zeenosaur

1

Cordova derleyicisinin uygun anahtar deposu dosyasını bulamaması da olabilir.



Çözüm: Yürütmeden önce imzalama özellikleriniionic cordova build android belirtin

Adım-1 : Hata ayıklama anahtar deposu dosyası oluşturun

Komutu yürütün

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Şifre kullanın: android

Adım 2: (anahtar deposu dosyasını kopyalayın debug.keystoreitibaren) ~/.androidiçin platform/androidgeçerli projenin dizinde

Adım 3: Bir dosyayı adlı oluşturun release-signing.properties içinde platform/androiddizine

Adım 4: İçeriği dosyaya ekleyin

storeFile=debug.keystore
keyAlias=androiddebugkey
storePassword=android
keyPassword=android

Not: Bunlar varsayılan değerlerdir. Özel takma ad ve parola sağladıysanız, bunları uygun şekilde kullanın.

Adım 5: Şimdi inşa edinionic cordova build android


1

Projemi başka bir bilgisayarda (farklı Android Studio) açtıktan sonra aynı sorunu yaşadım. Benim durumumda, başlangıçta Firebase'i kurmak için kullandığım Firebase Assistant'ı kullanarak çözdüm. Firebase Assistant'ı (Araçlar> Firebase) açın ve Kimlik Doğrulama> Bağlan'ı seçin. Bu, projeyi Firebase'e yeniden bağladı ve yapılandırmaları güncelledi


1

2 haftadan beri Google Giriş sorununa takılı kaldım, sonunda iyi sıraladım. Nedenini açıklamama izin verin. Sorun firebase ile ilgiliydi. Firebase'de isteğe bağlı olarak bir "destek e-postası" alanından söz ettiler. Ancak onu ekledikten sonra (kişisel e-postanızdan herhangi biri) sorun sıralandı ve yanıtı aldım. 12501 olarak bir hata alıyorsanız, bu, google hesabınızdaki ayarlarla ilgilidir.


1

Bir süre buna sıkışıp kaldım.

Bu adımların gerçekleştirildiğinden emin olun.

Correct SHA key is saved on Firebase Console.
Valid reversed client id.
from fcm console=>select app=>from authentication=>enable google sign-in method

0

Benim durumumda, bunun nedeni yanlış Google İstemci Kimliği. Anahtarımı listelenen anahtara değiştiriyorum google-services.json( oauth_clientnesnenin altında )


0

Aşağıdaki şeylerin doğru şekilde kurulduğundan emin olun:

  1. Google Projenizde Müşteri Kimliği oluşturun.
  2. Söz konusu İstemci Kimliği için uygun SHA-1 anahtarını sağlayın. (hata ayıklama / yayınlama)
  3. Söz konusu Müşteri Kimliği için uygun paket adını sağlayın.
  4. Yap emin İstemci Kimliği oluşturduğun strings.xml, google-services.jsonya credentials.jsondosyayı.

0

https://developers.google.com/identity/sign-in/android/sign-in bu api belgelerini izleyin, ancak WEB_CLIENT_ID içinde google-services.json dosyasında oluşturulan istemci kimliği değerini kullandığını unutmayın.

class MainActivity : AppCompatActivity(), GoogleApiClient.OnConnectionFailedListener {
private val TAG = "JSAGoogleSignIn"
private val REQUEST_CODE_SIGN_IN = 1234
private val WEB_CLIENT_ID = "354298333018-XXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"
private var mAuth: FirebaseAuth? = null

private var mGoogleApiClient: GoogleApiClient? = null
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    var txt_register = findViewById<TextView>(R.id.txt_register)
    txt_register.setOnClickListener {
        var intent = Intent(this@MainActivity, RegisterActivity::class.java)
        finish()
        startActivity(intent)
    }
    val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(WEB_CLIENT_ID)
            .requestEmail()
            .build()
    mGoogleApiClient = GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build()

    mAuth = FirebaseAuth.getInstance()
    sign_in_button.setOnClickListener {
        val intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient)
        startActivityForResult(intent, REQUEST_CODE_SIGN_IN)
    }

}


override fun onConnectionFailed(p0: ConnectionResult) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}


private fun updateUI(user: FirebaseUser?) {
    if (user != null) {
        Log.e("Email", "Value" + user.email)
    }

}

fun signIn() {

}

override fun onStart() {
    super.onStart()
    val currentUser = mAuth!!.currentUser
    updateUI(currentUser)
}

public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == REQUEST_CODE_SIGN_IN) {
        val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data)
        if (result.isSuccess) {
            // successful -> authenticate with Firebase
            val account = result.signInAccount
            firebaseAuthWithGoogle(account!!)
        } else {
            // failed -> update UI
            updateUI(null)
            Toast.makeText(applicationContext, "SignIn: failed!" + result.status,
                    Toast.LENGTH_SHORT).show()
        }
    }
}

private fun firebaseAuthWithGoogle(acct: GoogleSignInAccount) {
    Log.e(TAG, "firebaseAuthWithGoogle():" + acct.id!!)

    val credential = GoogleAuthProvider.getCredential(acct.idToken, null)
    mAuth!!.signInWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success
                    Log.e(TAG, "signInWithCredential: Success!")
                    val user = mAuth!!.currentUser
                    updateUI(user)
                } else {
                    // Sign in fails
                    Log.w(TAG, "signInWithCredential: Failed!", task.exception)
                    Toast.makeText(applicationContext, "Authentication failed!",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
            }
}

0

Benim durumumda, Firebase konsoluna parmak izi ekledikten sonra, Google geliştirici konsolu tarafından otomatik olarak alındı ​​ve parmak izlerini gösterdi. Ancak oturum açma işe yaramadı. Her adıma baktıktan sonra, Google'ın manifest dosya paketimi bu şekilde tersine çevirdiğini fark ettim com.xxxxxxxx.app. Ama aslında app.xxxxxxxx.comGoogle geliştirici konsolunda. Bu yüzden otomatik olarak bir parmak izi oluşturdum ve doğru paket adıyla parmak izi ekledim. BOOM!!. İşe yaradı.


0

Resimde gösterildiği gibi , Google seçeneği etkinleştirilmediğinde hata bana göründü .

Google'ın hesabını değiştirdiğimde ve Google'a bağlanma seçeneğini açmayı unuttuğumda oldu.


0

Projenizin sayısal veya herhangi bir sembol içeren herhangi bir özel karakter içermediğinden emin olun (proje adı com.google.testproject kadar basit olmalıdır)


Bu çağrı Proje paketi adı değil proje adı
b devloper

0

Benim durumumda üretim dışı bir uygulama üzerinde çalışıyordum, sorun firebase konsolunda bir proje oluştururken SHA-1 anahtarlarını Firebase ve Google geliştirici konsollarından ileri geri senkronize ederken sorunlar oluşmasıydı. Bu yüzden projeyi önce Google Developer konsolunda oluşturmaya ve ardından Firebase konsolunda yeni bir proje oluştururken seçmeye karar verdim.

Ayrıca bunun için size yardımcı olabilecek bir eğitim hazırladım.


0

Benim durumumda sorun, emülatörümün Play Store'a sahip olmamasıydı. Öykünücüyü (API 23 adlı) Visual Studio aracılığıyla yaptım, çünkü Xamarin.Forms kullanarak da geliştiriyorum ve Visual Studio'nun Android Aygıt Yöneticisi'nde öykünücünüzün Google Play Store'a sahip olup olmayacağını seçebilirsiniz.

Android Studio'nun AVD'si aracılığıyla bir emülatör oluşturmalı ve Play Store'a sahip olduğundan emin olmalıydı:

görüntü açıklamasını buraya girin


-1

Bu seçenekleri deneyin:

keytool -list -v -keystore C:\Users\MG\Desktop\test.jks -alias test

Şifre ister ve sadece şifreyi girin. SHA1, MD5 parmak izlerini görebilirsiniz.

görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.