Błąd logowania Google 12500


107

Próbuję zintegrować Google Sign In z moją aplikacją. Nie mam serwera zaplecza, po prostu pobieram dane zalogowanego konta Google do mojej aplikacji.

Po raz pierwszy wypróbowałem to za pomocą przykładu logowania Google, ale wystąpił błąd (nie wprowadzono żadnych zmian w kodzie z wyjątkiem wydrukowania poniższego śladu stosu). Właśnie użyłem przykładu SignInActivity, ponieważ nie mam serwera zaplecza.

 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;
         }
     }
  }

Z tego, co przeczytałem, przyczyną problemu może być generacja SHA1 .

Postępowałem zgodnie z kompletnym przewodnikiem, ale najwyraźniej nie działa.

Skopiowałem SHA1 z Gradle SigningReport

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

jaka może być tego przyczyna?

Dzięki

PS Czy to możliwa przyczyna?

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

Hej, czy możesz wysłać swój kod
Dilip

Cześć @Dilip, dosłownie tego użyłem :) github.com/googlesamples/google-services/tree/master/android/… . Mimo to zaktualizowałem
Aaron

1
Więc co się stanie, dostaniesz ten sam błąd lub coś innego się wydarzy. Jedna rzecz, wykonaj jeszcze raz ręcznie SHA1 i umieść w konsoli programisty na swojej aplikacji i sprawdź krzyżowo nazwę pakietu, pobierz plik google-services.json i umieść na poziomie aplikacji.
Dilip

Tak @Dilip. Otrzymuję ten sam błąd. Skrzyżowałem nazwę pakietu. Próbowałem nawet użyć innego magazynu kluczy, ale wynik jest taki sam.
Aaron

Trzeba dokonać zmiany kodu, aby uzyskać swój klucz API. I tak, powinieneś zaktualizować usługi odtwarzania
OneCricketeer

Odpowiedzi:


38

Po prostu zaktualizuj swoje usługi Google Play do najnowszej wersji (lub 11720000 w tym przypadku). Jeśli używasz formatu AVD, obrazy Nexusa 5 i 5X obsługują Google Play. Po uruchomieniu emulatora przejdź do menu Extended Controls> Google Play, a następnie zaktualizuj.


Jak to zrobić na urządzeniach Samsung?
Pinkesh Darji

7
Nie o to chodzi w moim przypadku. Usługi Google Play są już aktualne.
Adam Hurwitz

@ zub0r za rozwiązanie dotyczące projektu i prywatności linki powinny być przyjmowane jako prawidłową odpowiedź.
Adam Hurwitz

Proszę, gdzie jest rozszerzone menu sterowania, na emulatorze lub w Visual Studio?
George Udosen

129

Błąd PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500:, null)

Ten błąd 12500 można rozwiązać, dodając adres e-mail pomocy technicznej do projektu w ustawieniach projektu. Otwórz link https://console.firebase.google.com/

Wybierz swój projekt i otwórz zakładkę ustawień.

Podaj prawidłowy adres e-mail pomocy i uruchom ponownie aplikację.

wprowadź opis obrazu tutaj


11
Dzięki! Ten błąd jest dość tajemniczy, może oznaczać dowolną z rzeczy wymienionych w odpowiedziach tutaj. Mój problem był taki :(
Billda

3
Zrobiłem wszystko, o czym wspomniałem w konsoli programisty developers.google.com/identity/sign-in/android/sign-in i po dniu spędzonym na próbie umieszczenia odcisku palca SHA-1 i to wszystko było problemem. Pomogłeś. Wielkie dzięki!
klasa Android

Spróbuj dodać klucz SHA1 do swojego projektu @RohitSingh
Maddu Swaroop

1
@MadduSwaroop Gdyby tylko był sposób na dwukrotne głosowanie za ... dzięki sir
Lefty

2
Uratowałeś mi dzień
Houssem

46

Sprawdź, czy odciski palców SHA-1 są dodawane do ustawień projektu Firebase. Jeśli nie, znajdź odcisk palca SHA-1 za pomocą

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

Znajdź również odcisk palca SHA-1 klucza zwalniającego za pomocą

keytool -list -v -keystore <keystore path>

Usuń <keystore path>ze ścieżką magazynu kluczy.

Następnie dodaj oba odciski cyfrowe SHA-1 do ustawień projektów Firebase.

Uwaga: nie zapomnij zastąpić google-services.json zaktualizowanym plikiem google-services.json nowymi odciskami palców. Straciłem na tym dwa dni.

Podczas debugowania

Studio Android automatycznie generuje się ~/.android/debug.keystore przy pierwszej kompilacji do debugowania i używa go do podpisywania aplikacji.

Aby uzyskać uruchomienie SHA-1 (hasło android) ( dokument ):

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

To SHA-1powinien być dodany do ustawień aplikacji w firebasecelu umożliwienia wykorzystania google znak w możliwościach podczas testowania debugowania.


2
Skąd masz pewność, że używa Firebase?
PaulG,

Zgadłem (podobieństwo w kodzie i bez serwera). Projekt Firebase jest też połączony z konsolą GCP. Możemy również zmienić odciski palców w danych logowania GCP.
Niyas Nazar

ten sam błąd z, ale w moim przypadku nie był związany z Firebase (nie używam go).
Majed DH

Wejdź na console.developers.google.com/apis/credentials. Dodaj nowe dane logowania (klienta uwierzytelniania O) z kluczem SHA. (Firebase robi to automatycznie dla naszych projektów
Firebase

Plik google-services.json można znaleźć w katalogu aplikacji w projekcie. (Przejdź przez Finder / File Explorer)
Mehul Tandale

44

 dla błędu 12500 Musisz dodać wsparcie gmail tylko w ustawieniach firebase, a dla błędu 10 dodać odcisk palca ssh w konsoli firebase, jak widać na obrazku


dobra i prosta odpowiedź, właśnie skonfigurowałem moje konto Gmail i bam, że zrobi resztę
Ajeett

„dla błędu 12500 Musisz dodać obsługę Gmaila tylko w ustawieniach Firebase, a dla błędu 10 dodać odcisk palca ssh w konsoli Firebase, jak widać na obrazku” To naprawdę pomogło. Dostawałem 12500, zastosowałem odcisk palca SHA1 i nadal nie działał. Dodanie E-MAIL WSPARCIA POMOCY. Dzięki!
klasa Android

44

E-mail wsparcia, a także wszystkie linki do projektu i prywatności są niezbędne do działania Google SignIn, w przeciwnym razie wyrzuca 12500.

Ustaw go na https://console.developers.google.com/apis/credentials u dołu drugiej karty o nazwie „Ekran akceptacji OAuth” - znajdziesz tam trzy linki, które należy skonfigurować.

Nie jest to NIGDZIE wspomniane w przewodnikach po Firebase.


3
Dzięki, to dla mnie działa. Mam zmarnowany prawie całe dni na rozwiązanie problemu
Krishan Kumar Sharma

2
Dzięki, właśnie dodałem jedną z „autoryzowanych domen” do linków prywatności i wszystko działało. Zaoszczędziłeś mi kilka godzin prób i błędów 💌
Coco

To powinna zostać zaakceptowana odpowiedź. Zmagałem się z tymi 2 dniami bez żadnego sukcesu. Google powinien aktualizować przewodniki, na razie ich dokumentacja jest myląca, przewodnik nigdy nie będzie działał, a kod błędu nic nie mówi
użytkownik1209216

1
gdzie dodać linki prywatności?
Shihab Uddin

4
Na drugiej karcie o nazwie „Ekran
akceptacji


18

Utknąłem z tym na chwilę.

Upewnij się, że wykonano te czynności-

  • Prawidłowy klucz SHA jest zapisywany w konsoli Firebase.
  • Pobierz najnowszą wersję google-service.json
  • I ostatnie i najważniejsze Zapisz zgodę OAuth pod poświadczeniami w Google API, ekran OAuth Zajęło to dużo czasu. I po tym działało dobrze.

6
dobrze. to powinna być akceptowana odpowiedź na rok 2019 tutaj. Google dziwnie „musi” zaktualizować zawartość w ramach Zgoda OAuth
mochadwi

1
Ugh, kolejny głos za tym. Całkowicie był to mój niejasny problem.
easycheese

12

Wygląda na to, że Twój SHA1 został nadpisany przez sklep Google Play. Sprawdź w swoim sklepie Google Play, panelu uruchamiania, pod podpisywaniem aplikacji, sprawdź, czy Google Play ma dodany dodatkowy SHA1.

I skopiuj ten SHA1, dodaj do odpowiedniego miejsca, zrobi to.


1
o mój Boże! Dziękuję za tę wskazówkę! Pakiety aplikacji utworzyły własny SHA1, więc klucze wydania, które są używane lokalnie (podczas generowania plików APK), nie są już poprawne.
Jia Tse

To najbardziej zagmatwany przepływ pracy w historii. Ale dzięki za wskazówkę
DarkNeuron

5

Jeśli nadal jest ktoś z podobnym problemem, jeśli dodajesz niestandardowe zakresy, upewnij się, że jest to prawidłowy zakres. W moim przypadku wymieszałem zakresy Facebooka z zakresami Google i zajęło mi trochę czasu, zanim to rozgryzłem!


5

Używam uwierzytelniania Firebase. Mój SHA-1 został wskazany poprawnie, identyfikator klienta również był poprawny, ale nadal otrzymywałem 12500.

Okazało się, że moim problemem było to, że nie wskazałem adresu e-mail pomocy technicznej w ustawieniach projektu. (Ustawienia -> zakładka Ogólne -> Twój projekt (Ustawienia publiczne)).


3
To samo stało się ze mną. Występują poważne problemy z dokumentacją w usługach Google. Chciałbym, żeby udokumentowali takie problemy lub przynajmniej pokazali przyjazny dla użytkownika błąd.
ashish-goel

4

Myślę, że błąd pochodzi z niewłaściwego SHA1. Proszę nie zapominać, że SHA1 różni się między trybem wydania a trybem debugowania w Android Studio. Zamiast używać narzędzia keytool, aby uzyskać SHA1, możesz użyć projektu Gradle -> Zadanie -> android -> podpisywanieReport w studiu android (można go otworzyć za pomocą menu Widok -> Okno narzędzi -> gradle), aby uzyskać zwolnienie i debugowanie SHA1. Następnie, aby ułatwić pracę, musisz utworzyć 2 oddzielne poświadczenia z dwoma SHA1 w konsoli Google w chmurze (Google po prostu poinstruuje, aby utworzyć 1 za pomocą wersji SHA1, kiedy opracujemy, nie będzie działać, ponieważ używa debugowania SHA1).


4

Przejdź do swojego projektu w konsoli Firebase, otwórz Ustawienia projektu, dodaj tam swoje odciski cyfrowe certyfikatu SHA. Pobierz zaktualizowany plik google-services.json i dodaj go do folderu aplikacji Projekty.

To zadziałało dla mnie.

Zrzut ekranu konsoli Firebase


4

Najpierw upewnij się, że zarejestrowałeś swoją aplikację w konsoli programistów Google

Upewnij się, że zarówno debugi releaseklawiszy w aplikacji Firebase. Jeśli ten błąd pojawia się w środowisku produkcyjnym, dodaj swoją SHA-1 release keyaplikację do bazy ognia. Jeśli pojawi się w fazie rozwoju, dodaj swój SHA-1 debug key.

Gdzie dodać odcisk palca SHA-1

Pobieranie klucza debugowania / wydania:

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

Pamiętaj, aby pobrać zaktualizowaną google-services.jsonaplikację do swojej aplikacji.


Nie udało mi się z GoogleSignInResult.getSuccess () zwracać false i kod 12500. Ostatecznie ktoś inny skonfigurował moją OAuth za pomocą swojego SHA1 zamiast mojego klucza debugowania. To naprawiło.
Reckless

@Reckless Cieszę się, że to pomogło!
Denn

2

U mnie problem polegał na używaniu identyfikatora klienta „wydania” w mojej aplikacji skonfigurowanej do debugowania. Upewnij się, że masz klucz wydania i debugowania, używając odpowiednio każdego SHA-1.


2

Jeśli przyjeżdżasz tutaj z fluttera : jest to jeden z narożnych przypadków, które musimy naprawić zgodnie z dokumentacją tutaj: https://pub.dev/packages/google_sign_in wprowadź opis obrazu tutaj

  • Przejdź do interfejsów API i usług Google
  • Wybierz aplikację, w której chcesz zaimplementować logowanie Google.
  • Następnie kliknij Włącz APIS i usługi

wprowadź opis obrazu tutaj

  • Następnie wyszukaj interfejs API Google Peoples

wprowadź opis obrazu tutaj

  • Otwórz kartę Google People API i kliknij włącz, Twoja aplikacja może pozbyć się problemu.

2

Gdy Twoja aplikacja uwierzytelnia się na serwerze zaplecza lub uzyskuje dostęp do interfejsów API Google z serwera zaplecza, musisz przekazać identyfikator klienta OAuth 2.0 utworzony dla Twojego serwera do metody requestIdToken podczas konstruowania obiektu GoogleSignInOptions, aby uzyskać dostęp do podstawowych informacji o profilu użytkownika . Nie zapomnij też przesłać e-maila do pomocy technicznej na ekranie akceptacji OAuth, który znajduje się na stronie Poświadczenia w konsoli API.


2

W moim przypadku ten błąd wystąpił, ponieważ uwierzytelnianie Androida zostało usunięte przez starszy zespół, ponieważ wydaje się, że nie ma potrzeby używania klucza Androida do uwierzytelniania zaplecza. Dlatego do logowania w Google potrzebne są zarówno klucze klienta Android, jak i klienta WWW.


1
Dzięki za to! Usunąłem również mój identyfikator klienta Androida, ponieważ uważałem, że nie jest potrzebny, ponieważ potrzebujemy tylko identyfikatora klienta internetowego.
zeenosaur

1

Może się również zdarzyć, że kompilator Cordova nie może znaleźć odpowiedniego pliku kluczy.



Rozwiązanie: Przed wykonaniem ionic cordova build androidokreśl właściwości podpisywania

Krok 1 : Wygeneruj plik kluczy debugowania

Wykonaj polecenie

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

Użyj hasła: android

Krok 2: Skopiuj plik kluczy ( debug.keystore) z ~/.androiddoplatform/android katalogu bieżącym projekcie

Krok 3: utwórz plik o nazwie release-signing.properties wplatform/android katalogu

Krok 4: Dodaj zawartość do pliku

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

Uwaga: są to wartości domyślne. Jeśli podałeś niestandardowy alias i hasło, użyj ich odpowiednio.

Krok 5: Teraz budujionic cordova build android


1

Doświadczyłem tego samego problemu po otwarciu mojego projektu na innym komputerze (inny Android Studio). W moim przypadku rozwiązałem to za pomocą Asystenta Firebase, którego użyłem do początkowej konfiguracji Firebase. Otworzyłem Asystenta Firebase (Narzędzia> Firebase) i wybierz Uwierzytelnianie> Połącz. Spowodowało to ponowne połączenie projektu z Firebase i zaktualizowanie konfiguracji


1

Utknąłem w problemie z logowaniem Google od 2 tygodnia, w końcu dobrze to załatwiłem. Pozwól mi wyjaśnić powód. Problem był związany z firebase. W Firebase wspomnieli o polu „e-mail wsparcia” jako opcjonalnym. Ale po dodaniu go (dowolnego osobistego e-maila) problem został rozwiązany i otrzymałem odpowiedź. Jeśli otrzymujesz błąd jako 12501, jest to związane z ustawieniami na Twoim koncie Google.


1

Utknąłem z tym na chwilę.

Upewnij się, że wykonano te czynności-

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

W moim przypadku dzieje się tak z powodu niewłaściwego identyfikatora klienta Google. Zmieniam swój klucz na klucz wymieniony w google-services.json(pod oauth_clientobiektem)


0

Upewnij się, że poprawnie skonfigurowałeś następujące rzeczy:

  1. Wygeneruj identyfikator klienta w swoim projekcie Google.
  2. Podaj odpowiedni klucz SHA-1 dla tego identyfikatora klienta. (debugowanie / wydanie)
  3. Podaj poprawną nazwę pakietu dla tego identyfikatora klienta.
  4. Upewnij się, że wygenerowany identyfikator klienta strings.xml, google-services.jsonlub credentials.jsonpliku.

0

https://developers.google.com/identity/sign-in/android/sign-in postępuj zgodnie z tą dokumentacją API, ale pamiętaj, że wewnątrz WEB_CLIENT_ID użyj wartości identyfikatora klienta, który jest generowany w pliku google-services.json.

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

W moim przypadku po dodaniu odcisku palca w konsoli Firebase został on automatycznie odebrany przez konsolę programisty Google i pokazany odciski palców. Ale logowanie nie działa. Po przejrzeniu każdego kroku doszedłem do wniosku, że Google odwrócił mój pakiet pliku manifestu w ten sposób com.xxxxxxxx.app. Ale tak naprawdę jest app.xxxxxxxx.comw konsoli programisty Google. Więc usunąłem auto utworzyło odcisk palca i dodałem odcisk palca z poprawną nazwą pakietu. BUM!!. Zadziałało.


0

Błąd pojawił się, gdy opcja Google nie została włączona, jak pokazano na obrazku .

Stało się to, gdy zmieniłem konto Google i zapomniałem włączyć opcję łączenia się z Google.


0

Upewnij się, że projekt nie powinien zawierać żadnych znaków specjalnych, w tym liczb ani innych symboli (nazwa projektu powinna być prosta, jak com.google.testproject)


To wywołanie Nazwa pakietu projektu, a nie nazwa projektu
b devloper

0

W moim przypadku pracowałem nad aplikacją nieprodukcyjną, problem polegał na tym, że podczas tworzenia projektu w konsoli Firebase występowały problemy z synchronizacją kluczy SHA-1 tam iz powrotem z konsol programistycznych Firebase i Google. Postanowiłem więc najpierw stworzyć projekt w konsoli Google Developer, a następnie wybrać go podczas tworzenia nowego projektu w konsoli Firebase.

Stworzyłem również poradnik , który może ci pomóc.


0

W moim przypadku problem polegał na tym, że mój emulator nie miał Sklepu Play. Emulator (o nazwie API 23) wykonałem za pośrednictwem Visual Studio, ponieważ programuję również przy użyciu Xamarin.Forms, aw programie Visual Studio Android Device Manager możesz wybrać, czy Twój emulator ma mieć Google Play Store.

Musiałem stworzyć emulator za pomocą AVD Android Studio i upewnić się, że ma Sklep Play:

wprowadź opis obrazu tutaj


-1

Wypróbuj te opcje:

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

Pyta o hasło i po prostu wprowadź hasło. Możesz zobaczyć odciski palców SHA1, MD5.

wprowadź opis obrazu tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.