Błąd: stan {statusCode = DEVELOPER_ERROR, rozwiązanie = null}

104

Korzystam z logowania gplus i otrzymuję ten błąd w momencie, gdy jestem w onActivityResult ....

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
    client.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 0) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result.isSuccess()) {

            GoogleSignInAccount acct = result.getSignInAccount();
//                Log.d("Result","details"+ acct.getDisplayName() + acct.getEmail());

            mEmail = acct.getEmail();
            String mFullName = acct.getDisplayName();
            String mGoogleplusId = acct.getId();


            SocialUser user = new SocialUser();
            user.setType("googleplus");

            user.setEmail(mEmail);
            user.setFullname(mFullName);
            user.setId(mGoogleplusId + "");
            loginParams.put("email_id", mEmail);
            loginParams.put("googlePlusId", mGoogleplusId);
            loginParams.put("full_name", mFullName);
            loginParams.put("registrationType", "googleplus");
            SignUpService(user);


        } else {
            Toast.makeText(CustomerLogIn.this, "Unable to fetch data, Proceed manually", Toast.LENGTH_SHORT).show();
        }
    }
}

I wzywam do logowania gplus po kliknięciu przycisku. Po kliknięciu przycisku wykonywany jest następujący kod ....

 GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(CustomerLogIn.this)

            .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
            .build();


    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, 0);

I ja geetng ten błąd ...

Status{statusCode=DEVELOPER_ERROR, resolution=null}

w tej linii ....

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

Proszę zasugerować rozwiązanie.

Gurvinder Singh
źródło
1
Aplikacja jest źle skonfigurowana. Sprawdź konfigurację Google API.
1'hafs
6
Tak, ale nie jestem w stanie dowiedzieć się, co się stało.
Gurvinder Singh
Nie używam Firebase. Zobacz moje rozwiązanie tutaj: stackoverflow.com/a/46828895/1160216
Mike Miller

Odpowiedzi:

215

Musisz dodać swój klucz SHA1 do konfiguracji konsoli Firebase. Możesz to zrobić w ten sposób:

Konsola Firebase ( https://console.firebase.google.com ) -> Twój projekt -> konfiguracja -> przewiń do

wprowadź opis obrazu tutaj

Możesz znaleźć swój klucz SHA1, uruchamiając „Raport podpisywania” z Android Studio:

wprowadź opis obrazu tutaj

Następnie spójrz na kartę „Uruchom” i kliknij przycisk:

wprowadź opis obrazu tutaj

Myślę, że to łatwiejszy sposób. Mam nadzieję, że to pomoże.

SolArabehety
źródło
1
oto najłatwiejszy sposób na pobranie wersji SHA-1 z konsoli programisty Google: stackoverflow.com/a/50124038/4923891
eren130
Miałem problem ze zrozumieniem, gdzie umieścić ten klucz SHA w konsoli Firebase. Wreszcie to znalazłem. Otwórz Ustawienia projektu> Przewiń w dół, Dodaj odcisk palca, Umieść tam swój klucz SHA> Pobierz nowy plik google-services.json i umieść go na android-app \ app
paakjis
1
Uwaga! Mimo że konsola firebase ma miejsce na skrót klucza SHA-256, MUSISZ wprowadzić klucz SHA-1. SHA-256 nadal będzie wyświetlał błędy
f.khantsis,
Pomocny. Dzięki!
Pooja
30

Prawdopodobnie utworzyłeś plik konfiguracyjny przy użyciu SHA1 tokenu produkcyjnego , użyj rozszerzeniaandroiddebugkey aliasu do zebrania SHA1 odpowiadającego wersji debugowania twojej aplikacji i skopiuj plik konfiguracyjny do katalogu 'app', powinieneś mieć oba pliki konfiguracyjne (jeden dla celów debugowania i innych dla środowiska produkcyjnego).

Na podstawie przewodnika opublikowanego w https://developers.google.com/identity/sign-in/android/start

Mario
źródło
5
Mój błąd został naprawiony po przełączeniu się na poświadczenia klienta sieci Web zamiast klienta Android dla identyfikatorów klienta OAuth 2.0. Sformułowanie nadal mnie dezorientuje, ponieważ opracowuję aplikację na Androida, która komunikuje się z serwerem WWW ... ale błąd zniknął przynajmniej
Burrito
12

Miałem ten sam problem i udało mi się go uruchomić, wykonując następujące kroki:

1. Dodaj odcisk cyfrowy DEBUG_KEYSTORE SHA1 do projektu Firebase. użyj następującego polecenia (MAC / LINUX)

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

2. teraz wygeneruj podpisany apk swojego projektu. Proces obejmuje generowanie magazynu kluczy dla wersji aplikacji.

  Copy the path of the newly generated .jks file.

3. Teraz wygeneruj odcisk cyfrowy RELEASE_KEYSTORE SHA1 za pomocą następującego polecenia

  keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

4. Skopiuj nowy SHA1 z danych wyjściowych i dodaj go jako kolejny odcisk cyfrowy SHA1 w konsoli aplikacji Firebase.

Teraz możesz już iść! ---- Nadzieja! to pomaga.

Udit Kapahi
źródło
który wydał sha1 tylko umieszczam, a następnie otrzymuję ten błąd, wygeneruj google_services.xml dla logowania Google, analityki i gcm, pojedynczy plik
Harsha
upewnij się, że Twój sha1 jest wersją „wydania” aplikacji, a nie wersją „debugowania”
Udit Kapahi
Ha tak, generuję podpisany apk i publikuję również w Appstore, że używam tylko haseł jks i keystore
Harsha
mój otwarty ssl to openssl-0.9.8k_WIN32. Używam previos do rozwoju jeden
Harsha
keytool wymaga hasła : „android”
Guglie
11

wprowadź opis obrazu tutaj

Sposób, w jaki to naprawiłem, polegał na podniesieniu klucza odpowiadającego podświetlonemu tekstowi. Ze względu na mylące użycie słowa „serwer” na stronie dokumentacji Firebase wybrałemServer key . Co było przyczyną problemu.

Klucz znajdziesz tutaj .

4127157
źródło
Dzięki! Zadziałało w moim przypadku. Myślę, że było to w jakiś sposób połączone z używaniem własnego serwera backendu (i wywoływaniem „requestServerAuthCode” w GoogleSignIn)
ITurchenko
5

Miałem ten sam problem, jak go rozwiązałem, że miałem inny identyfikator applicationId w moim pliku gradle niż nazwa pakietu w pliku manifestu. I użyłem applicationId do utworzenia pliku json. Musiałem zmienić nazwę pakietu na taką, jaka była moja applicationId i to naprawiło problem.

Renegat
źródło
1
Zawsze myślałem, że pakiet w Manifeście został zastąpiony przez ApplicationId zdefiniowany w gradle. To nie o to chodzi?
Flo Śr
3

Alternatywnie do odpowiedzi podanych tutaj, możesz użyć Asystenta Firebase w Android Studio, aby automatycznie dodać SHA-1 do swojego projektu za pomocą kliknięcia niektórych przycisków.

W Android Studio przejdź do Tools > Firebase > Select 'Authentication'i kliknij link, który mówi'Email and password authentication' .

Spowoduje to wyświetlenie małego samouczka na temat integracji uwierzytelniania z projektem, ale ponieważ prawdopodobnie już to wszystko zrobiłeś, po prostu kliknij 'Connect to Firebase'i gotowe.

Renan Aguiar
źródło
3

To stare pytanie, ale ostatnio utknąłem z błędem 10 (DEVELOPER_ERROR), ponieważ korzystałem z identyfikatora klienta Androida, który utworzyłem w Google Developer Console.

Rozwiązaniem dla mnie było użycie poświadczeń Androida w konsoli programisty Google tylko do wskazania klucza SHA mojego apk i użycie identyfikatora klienta aplikacji internetowej (!) Z konsoli programisty Google w mojej aplikacji cordova.

config.xml:

<plugin name="cordova-plugin-googleplus" spec="^5.3.0">
    <variable name="REVERSED_CLIENT_ID" value="com.googleusercontent.apps.[web-application-client-id]" />
    <variable name="WEB_APPLICATION_CLIENT_ID" value="[web-application-client-id].apps.googleusercontent.com" />
</plugin>

kod:

window.plugins.googleplus.login(
    {
       'webClientId': '[web-application-client-id].apps.googleusercontent.com'
    }, 
    ...

Nie używam Firebase.

tobik
źródło
Dziękuję bardzo, zaoszczędziło mi to dużo czasu. Rzeczywiście, użycie automatycznie generowanej strony internetowej client idrozwiązało problem DEVELOPER_ERROR. Chociaż dla mnie nie ma to sensu i nie jest oczywiste, że należy użyć innego identyfikatora klienta.
Myroslav Kolodii
3

Mogłeś wygenerować i dodać zły klucz SHA1. Wykonaj następujące kroki, aby wygenerować klucz SHA1 w Android Studio:

  1. Kliknij Gradle (w panelu po prawej stronie zobaczysz pasek Gradle)
  2. Kliknij Odśwież (kliknij Odśwież na pasku Gradle, zobaczysz listę skryptów Gradle twojego projektu)
  3. Kliknij swój projekt (lista formularza nazwy twojego projektu (root))
  4. Kliknij Zadania
  5. Kliknij Android
  6. Kliknij dwukrotnie na podpisanie raportu (otrzymasz SHA1 i MD5 w Run Bar (czasami będzie to w Gradle Console))

Teraz dodaj ten klucz SHA1 do projektu Firebase dla systemu Android.

Sanjay Sharma
źródło
3

Proszę umieścić poprawny plik json w katalogu głównym projektu Android.
Więcej informacji znajdziesz tutaj: https://coderzpassion.com/android-working-latest-google-plus-login-api/

Jagjit Singh
źródło
Czy dodanie tego pliku json, którego używamy wcześniej, jest obowiązkowe?
Gurvinder Singh
Umieściłem właściwy plik z odpowiednią konfiguracją, nadal jest błąd
Bibaswann Bandyopadhyay
1

Błąd jest spowodowany tym, że suma kontrolna SHA-1 klucza debugowania lub wydania nie jest uwzględniona w konsoli firebase / google.

Najpierw wygeneruj klucz za pomocą następującego polecenia:

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

Następnie skopiuj sumę kontrolną SHA-1 i przejdź do:

Konsola Firebase> Twój projekt> Ustawienia aplikacji> Dodaj odcisk palca

Nabin Bhandari
źródło
1

U mnie działało, kiedy go po raz pierwszy wdrożyłem, ale zatrzymało się po kilku dniach programowania, ze wspomnianym komunikatem o błędzie.

Rozwiązałem problem, wykonując następujące czynności:

  1. Dodałem odcisk palca sha-256 do odcisku palca sha-1, który już miałem w konsoli Firebase. (Nie wiem, czy ten krok jest wymagany)
  2. Ponownie pobrałem plik google-services.json i zastąpiłem stary plik.
  3. ponownie zainstalował aplikację

i zadziałało

Mantoska
źródło
0

Natknąłem się na ten błąd w mojej aplikacji Firebase. Zostało to naprawione, kiedy dodałem requestIdToken(activity.getString(R.string.default_web_client_id))część poniżej.

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail().requestIdToken(activity.getString(R.string.default_web_client_id))
        .build();

    apiClient = new GoogleApiClient.Builder(activity)
        .addConnectionCallbacks(this)
        .enableAutoManage(activity, this)
        .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
        .build();

    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(apiClient);
    activity.startActivityForResult(signInIntent, RC_GOOGLE_SIGN_IN);
Dan Brough
źródło
co to jest default_web_client_id? skąd mogę to wziąć?
Ayman Al-Absi
@ AymanAl-Absi Czy poprawnie skonfigurowałeś swój projekt pod kątem usług Google? zobacz: developers.google.com/android/guides/google-services-plugin
Dan Brough.
1
@ AymanAl-Absi otrzymujesz również „default_web_client_id” z pliku google-service.json, w tym pliku możesz zobaczyć tag Client_ID w tym tagu, kopiujesz tylko ten tekst (client_ID) <[Client_ID] .app.etc>.
Prince,
0

Wystąpił ten błąd, gdy zaktualizowałem plik konfiguracyjny json o nowe konto Google.

Ręczne odinstalowanie aplikacji i ponowna instalacja aplikacji zadziałały.

sanath_p
źródło
0

Upewnij się, że włączono Logowanie przez Google w obszarze Uwierzytelnianie w konsoli Firebase.

hellowill89
źródło
0

Rozwiązałem swój problem, używając odpowiedniego server_client_id w tej linii:

String serverClientId = getString(R.string.server_client_id);

Użyłem złego kodu.

MJ
źródło
0

Niektóre usługi, takie jak logowanie do Google, wymagają dodania odcisku palca SHA1 do konsoli Firebase.

Brakowało mi dodania odcisku palca SHA w konsoli Firebase. Możesz to zrobić, przechodząc do Konsola FireBase> ustawienia projektu> Dodaj opcję odcisku palca.

Możesz wygenerować odcisk palca SHA1 w bardzo łatwy sposób https://www.youtube.com/watch?v=FczARQ244GE

Potem popełniłem jeszcze jeden błąd

Po wygenerowaniu klucza SHA1 z powyższej metody. Skopiowałem nieprawidłowy klucz SHA1, który wygasł. Więc upewnij się, że klucz SHA1, który kopiujesz z powyższego wyjścia, jest prawidłowy (sprawdź poprawną wartość do momentu, również klucza SHA1)

Upewnij się również, że nazwa pakietu (xyz), którą dodałeś w firebase, jest taka sama, jak używana w kodzie Androida.

Upewnij się również, że używasz prawidłowego AppID

user2694064
źródło
0

Po długich poszukiwaniach znalazłem rozwiązanie. Właściwie ten błąd Error: Status{statusCode=DEVELOPER_ERROR, resolution=null}wskazuje na nieprawidłowy SHA-1 LUB niepoprawną nazwę pakietu LUB coś innego? W moim przypadku dodaję debugsłowo kluczowe na końcu nazwy mojego pakietu com.sample.app=>com.sample.app.debug

Albert
źródło