Szybka odpowiedź
Błąd 10 Google Sign-In, czyli DEVELOPER_ERROR, oznacza, że aplikacja na Androida jest nieprawidłowo skonfigurowana. Jeśli logowanie działa lokalnie, ale zawodzi w teście zamkniętym w Play, sprawdź, czy SHA-1 certyfikatu podpisywania aplikacji zainstalowanej z Play oraz jej ostateczna nazwa pakietu są zarejestrowane we właściwym projekcie Firebase lub Google Cloud, a także czy w serverClientId lub webClientId jest identyfikator klienta typu aplikacja internetowa, a nie klienta Androida. Potem przetestuj ponownie wersję zainstalowaną z Google Play.
Wybierz swoją konfigurację
Masz już dodany SHA-1? Przejdź do sekcji co sprawdzić dalej.
Ten tekst dotyczy jednej awarii: natywnego logowania przez Google, które przestaje działać w kopii dostarczanej przez Google Play. Oddziela ją od innych, podobnie wyglądających błędów, a potem omawia frameworki, innych dostawców logowania i to, co powinni zgłaszać testerzy. Każdą cytowaną tu stronę Google sprawdziliśmy 16 października 2026 r., a zgłoszenia społeczności są wyraźnie oznaczone. Źródła znajdziesz na końcu.
Na tej stronie
Napraw Google Sign-In w wersji z Play
Dopasuj aplikację zainstalowaną przez testerów do zarejestrowanej dla niej nazwy pakietu i SHA-1 certyfikatu podpisywania. Wykonaj te kroki po kolei; ścieżki dla Firebase i Google Cloud znajdziesz poniżej.
Ustal, która kopia zawodzi
Sprawdź, czy tester zainstalował aplikację z Twojego testu zamkniętego w Google Play, i zanotuj wersję, którą ma. Potem zanotuj ostateczny identyfikator aplikacji (application ID) tej wersji. Przewodnik Androida po kompilacji mówi, że identyfikator aplikacji określa właściwość applicationId, która może się różnić od przestrzeni nazw w kodzie źródłowym albo dostać sufiks w wariancie (flavor) kompilacji. Jeśli tester w ogóle nie może zainstalować aplikacji, to inny problem: zobacz, dlaczego aplikacja jest niedostępna dla testerów.
Otwórz podpisywanie aplikacji w Play
W Play Console otwórz aplikację i przejdź do Protected with Play. Google przeniósł tam podpisywanie aplikacji w maju 2026 r., a jego własna pomoc nazywa kolejny krok na dwa sposoby (tabela poniżej). Obie drogi prowadzą do tej samej strony.
| Ścieżka w wersji Google | Gdzie Google jej używa | Co tam otworzyć |
|---|---|---|
| Protected with Play > Play Store distribution > Go to Play app signing | Gdzie Google jej używaPomoc Play Console, Use Play App Signing, sekcja o rejestracji w interfejsach API | Co tam otworzyćApp signing key certificate, a w nim wartość SHA-1 |
| Protected with Play > Play Store protection > Manage Play app signing | Gdzie Google jej używaInformacje o aktualizacji z maja 2026 r. od Google Play oraz inna sekcja tej samej strony pomocy | Co tam otworzyćTa sama strona; etykiety menu mogą się różnić między kontami |
Skopiuj SHA-1 klucza podpisywania aplikacji
Otwórz sekcję App signing key certificate (certyfikat klucza podpisywania aplikacji), a nie certyfikat klucza przesyłania, i skopiuj jej SHA-1. Jeśli Play pokazuje dla Twojej aplikacji więcej niż jeden klucz podpisywania, zarejestruj każdy odpowiedni odcisk cyfrowy (zobacz kilka certyfikatów podpisywania). Zachowaj dotychczasowe odciski debug i lokalne, a odciski z Play dodaj obok nich. Nie zmieniaj (nie rotuj) klucza podpisywania, żeby naprawić logowanie.
Zarejestruj go tam, gdzie aplikacja obsługuje logowanie
Skorzystaj ze ścieżki Firebase albo ścieżki Google Cloud, zależnie od tego, której używa Twoja aplikacja, i pracuj w tym samym projekcie, który wydał identyfikatory klienta zapisane w aplikacji.
Przetestuj ponownie zainstalowaną wersję z Play
Jeśli zmieniłeś tylko rejestrację w Firebase lub Google Cloud, zanim cokolwiek skompilujesz, spróbuj ponownie na kopii już zainstalowanej z Play; deweloperzy zgłaszali, że poprawka samej rejestracji zadziałała bez przesyłania nowej wersji. Jeśli zmieniłeś dołączoną do aplikacji konfigurację, identyfikator klienta, kod albo zależność, prześlij nową wersję na tę samą ścieżkę zamkniętą i przetestuj właśnie ją. Google nie publikuje stałego czasu, po którym nowy odcisk cyfrowy zaczyna działać, więc testuj ponownie, zamiast czekać określoną liczbę godzin.
Dodaj certyfikat z Play w Firebase
Zanim dodasz odcisk cyfrowy klucza podpisywania z Play, wybierz właściwą aplikację na Androida. Kroki opierają się na pomocy Firebase dotyczącej odcisków cyfrowych i jego przewodniku po logowaniu przez Google.
- W konsoli Firebase otwórz projekt, którego używa Twoja aplikacja, a potem Project settings > General.
- W sekcji Your apps wybierz aplikację na Androida, której nazwa pakietu zgadza się z wersją, która zawodzi.
- Kliknij Add fingerprint, wklej SHA-1 klucza podpisywania aplikacji z Play i zapisz. Dodaj go obok istniejących odcisków, zamiast je zastępować.
- W sekcji Authentication > Sign-in method upewnij się, że Google jest włączony.
- Jeśli Firebase poprosi Cię o pobranie zaktualizowanego pliku
google-services.json, podmień plik w projekcie. Według Firebase plik ten „zawiera informacje o kliencie OAuth wymagane do logowania przez Google”, więc zmieniony plik oznacza nową wersję. Sprawdź, czy projekt i pakiet w pliku zgadzają się z aplikacją, która zawodzi.
SHA-256 dodawaj tylko tam, gdzie prosi o niego konkretna usługa Firebase. Na przykład uwierzytelnianie przez telefon używa SHA-256 na ścieżce Play Integrity; samo Google Sign-In opiera się na SHA-1.
Konfiguracja w Google Cloud bez Firebase
Dwa klienty OAuth mają dwa różne zadania. Klient Androida rejestruje Twoją aplikację; identyfikator klienta internetowego to ten, którego używa Twoje żądanie tokena.
| Typ klienta | Co zawiera | Gdzie go używasz |
|---|---|---|
| Android | Co zawieraNazwę Twojego pakietu i SHA-1 certyfikatu podpisywania | Gdzie go używaszRejestruje tożsamość natywnej aplikacji. Tego identyfikatora klienta nie wklejasz do serverClientId. |
| Aplikacja internetowa (Web application) | Co zawieraIdentyfikator klienta internetowego | Gdzie go używaszWartość serverClientId lub webClientId w Twoim żądaniu tokena oraz odbiorca (audience), którego akceptuje Twój backend. Codelab Google o funkcji Zaloguj się przez Google opisuje go jako klienta, który działa „jako klient backendu dla usługi logowania przez Google”. |
- Wybierz projekt, który wydał Twoje identyfikatory klienta, a potem otwórz Google Auth platform > Clients (pomoc Google Cloud).
- Zanim utworzysz kolejnego klienta Androida, poszukaj istniejącego z tą nazwą pakietu i tym SHA-1.
- Jeśli go brakuje, wybierz Create Client, ustaw Application type na Android, wpisz nazwę, nazwę pakietu i SHA-1 klucza podpisywania aplikacji z Play, a potem kliknij Create. Formularz Androida ma pole na SHA-1; SHA-256 tam nie trafia.
- Zarejestruj każdą potrzebną parę pakietu i certyfikatu, na przykład debug, lokalną wersję release i Play.
- Klienta internetowego zostaw na miejscu dla żądania tokena i nigdy nie umieszczaj tajnego klucza klienta (client secret) w aplikacji.
Udowodnij, że naprawa działa
Jedno udane logowanie nie dowodzi, że wersja jest naprawiona. Ta lista kontrolna to nasz zalecany test akceptacyjny, a nie reguła Google; ostatni wiersz jest ważny, bo u jednego dewelopera logowanie raz przeszło, a przy kolejnym i tak zawiodło. To problem z sesją, którego pojedyncze sprawdzenie by nie wychwyciło.
| Sprawdzenie | Dowód zaliczenia | Jeśli nie przechodzi |
|---|---|---|
| Właściwa aplikacja i wersja | Dowód zaliczeniaTester potwierdza zamierzoną instalację z Play i wersję | Jeśli nie przechodziNajpierw rozwiąż problem z wersją lub dostarczeniem przez ścieżkę |
| Pierwsze logowanie | Dowód zaliczeniaPo wybraniu konta aplikacja wraca w stanie zalogowanym | Jeśli nie przechodziZapisz dokładny wyjątek i skorzystaj z tabeli błędów poniżej |
| Chroniona funkcja | Dowód zaliczeniaTester może użyć funkcji, która wymaga zalogowania | Jeśli nie przechodziSprawdź obsługę tokenów w aplikacji i w backendzie |
| Wylogowanie i ponowne zalogowanie | Dowód zaliczeniaDrugie logowanie działa bez ponownej instalacji | Jeśli nie przechodziZbadaj obsługę sesji i wylogowania u dostawcy |
| Urządzenie, na którym wcześniej był błąd | Dowód zaliczeniaTen sam tester na tym samym urządzeniu teraz się loguje | Jeśli nie przechodziPorównaj certyfikat, system, konto i faktyczną wersję |
| Ciągłość testu | Dowód zaliczeniaTester nadal uczestniczy w teście, a Ty masz zapisaną poprawkę | Jeśli nie przechodziProblemy z udziałem w teście rozwiązuj osobno od logowania |
Dlaczego logowanie działa w wersji debug, a zawodzi w teście zamkniętym?
Aplikacja zainstalowana przez Google Play może mieć innego sygnatariusza niż plik APK instalowany lokalnie. Przewodnik Google po uwierzytelnianiu klienta zauważa, że „Android Studio automatycznie podpisuje aplikację certyfikatem debugowania”. Wersja release, którą kompilujesz samodzielnie, używa klucza skonfigurowanego dla tego wariantu. Przy Play App Signing Twój klucz przesyłania podpisuje pakiet, który przesyłasz, a Google podpisuje pliki APK trafiające do testerów kluczem podpisywania aplikacji.
Te klucze pełnią różne role, ale nie zawsze mają różne wartości: możesz dostarczyć własny klucz podpisywania, a niektóre konfiguracje używają jednego klucza w dwóch rolach. Porównuj faktyczne odciski cyfrowe, a nie nazwy kluczy.
| Zainstalowana kopia | Certyfikat do sprawdzenia | Pierwszy krok |
|---|---|---|
| Instalacja z Play z testu wewnętrznego, zamkniętego, otwartego lub wersji produkcyjnej przy Play App Signing | Certyfikat do sprawdzeniaCertyfikat lub certyfikaty podpisywania aplikacji w Play, dostępne w Protected with Play | Pierwszy krokZarejestruj każdy odpowiedni SHA-1 z Play |
| Uruchomienie debug z Android Studio | Certyfikat do sprawdzeniaCertyfikat debugowania tego komputera | Pierwszy krokZarejestruj ten SHA-1 dla pasującego identyfikatora aplikacji |
| APK w wersji release skompilowany na Twoim komputerze | Certyfikat do sprawdzeniaCertyfikat skonfigurowany dla tego wariantu release | Pierwszy krokNie zakładaj, że „release” oznacza klucz Google |
| Link do wewnętrznego udostępniania aplikacji | Certyfikat do sprawdzeniaWłasny certyfikat testowy wewnętrznego udostępniania aplikacji | Pierwszy krokZarejestruj go osobno, jeśli testerzy korzystają z tej drogi |
Wewnętrzne udostępnianie aplikacji to nie test wewnętrzny
Pomoc Google dotycząca wewnętrznego udostępniania aplikacji mówi: „Każdy plik APK jest ponownie podpisywany tym certyfikatem testowym”. Znajdziesz go w Test and release > Internal testing > Internal app sharing > Uploaders and testers > Internal test certificate. Ścieżki testu wewnętrznego i testu zamkniętego używają natomiast Twojego klucza podpisywania aplikacji w Play.
Odczytaj odciski cyfrowe samodzielnie
W przypadku wersji kompilowanych na Twoim komputerze raport podpisywania Gradle wypisuje SHA-1 i SHA-256 każdego wariantu, a keytool odczytuje bezpośrednio magazyn kluczy debug (gdy pojawi się prośba, wpisz hasło magazynu kluczy):
./gradlew signingReport
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Lokalny raport podpisywania nie mówi, czym podpisano kopię z Play. Aby sprawdzić samą wersję, która zawodzi, zainstaluj ją z testu zamkniętego na urządzeniu, pobierz ją przez adb i wypisz jej certyfikaty za pomocą apksigner, który według dokumentacji Google pokazuje „informacje o certyfikatach podpisywania pliku APK”. Podmień nazwę pakietu i użyj ścieżki, którą wypisze pierwsze polecenie:
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 jest dodany, a logowanie nadal nie działa
Zanim zmienisz kolejne ustawienia, porównaj certyfikat APK, który zawodzi, jego ostateczny identyfikator aplikacji i identyfikatory klienta. Przejdź tę drabinę od góry; każdy wiersz wyklucza jedną warstwę.
| Sprawdzenie | Co porównać | Decyzja |
|---|---|---|
| 1. Zainstalowana kopia i ścieżka | Co porównaćFaktyczna instalacja testera z Play w porównaniu z wersją, którą chciałeś przetestować | DecyzjaLokalny raport podpisywania nie jest dowodem na to, czym podpisuje Play |
| 2. Certyfikat | Co porównaćWynik apksigner verify --print-certs dla pliku APK z Play, który zawodzi, w porównaniu z tym, co zarejestrowałeś |
DecyzjaZarejestruj każdy potrzebny klucz podpisujący; zachowaj starsze wpisy, które nadal obsługują zainstalowanych użytkowników |
| 3. Ostateczny identyfikator aplikacji | Co porównaćapplicationId skompilowanego wariantu, łącznie z sufiksami wariantów (flavor), w porównaniu z zarejestrowanym pakietem | DecyzjaPrzestrzeń nazw w kodzie źródłowym się nie liczy |
| 4. Projekt i klient internetowy | Co porównaćProjekt i identyfikator klienta internetowego, których faktycznie używają Twoja wersja release i backend | DecyzjaLiterówka w tym miejscu psuje logowanie nawet przy poprawnych odciskach cyfrowych |
| 5. Dostawca i klienty istnieją | Co porównaćGoogle włączony jako dostawca oraz stojące za nim klienty Androida i internetowy | DecyzjaJeśli parę zajmuje inny projekt, zobacz uwagę o konflikcie poniżej |
| 6. Rodzina błędu | Co porównaćNatywny kod 10, anulowanie w Credential Manager, odrzucenie tokena przez backend albo niezgodność przekierowania w przeglądarce | DecyzjaKażdy z nich to osobna gałąź; zobacz tabelę błędów |
| 7. Problem frameworka w wersji release | Co porównaćZmniejszanie zasobów (resource shrinking), faktycznie użyta wersja biblioteki i inicjalizacja | DecyzjaKorzystaj z list zmian i potwierdzonych poprawek, a nie z przypadkowych aktualizacji czy powrotów do starszych wersji |
Wiersz 4 to nie teoria. W przypadku z Expo zgłoszonym we wrześniu 2026 r. dodanie odcisków cyfrowych niczego nie zmieniło; rozwiązaniem była poprawka literówki w identyfikatorze klienta akceptowanym przez backend.
Kilka certyfikatów podpisywania lub zmienione klucze
Jedna aplikacja może wymagać zarejestrowania więcej niż jednej tożsamości podpisywania. Aktualna pomoc dotycząca Play App Signing opisuje podpisywanie hybrydowe z trzema kluczami podpisywania aplikacji i prosi o zarejestrowanie odcisków cyfrowych każdego z nich, a aplikacja, która przeszła na nowy klucz podpisywania, nadal może mieć instalacje podpisane starszym. Zarejestruj tożsamości, które faktycznie mają Twoje instalacje, i nie usuwaj starszych wpisów, które nadal działają. Rotacja klucza wykracza poza zakres tego tekstu i nie jest sposobem na naprawę logowania.
Inny projekt ma już ten pakiet i SHA-1
Pomoc Firebase dotycząca konfliktów mówi, że para nazwy pakietu i SHA-1 „musi być unikalna we wszystkich projektach Firebase i Google Cloud”. Jeśli konsola odrzuca Twój odcisk cyfrowy, bo ma go inny projekt, zanim cokolwiek usuniesz, ustal, który projekt jest właścicielem tego klienta OAuth. Pomoc Google może pomóc zlokalizować konflikt; nie usuwaj aktywnych klientów ani projektów na chybił trafił.
Czy błąd 10 to to samo co 12500, 12501 lub canceled?
Nie. Zanim potraktujesz każde nieudane logowanie jako jeden problem, przeczytaj dokładny błąd i sprawdź, która biblioteka go zgłosiła. Dokumentacja wspólnych kodów stanu Google definiuje DEVELOPER_ERROR = 10 jako „Aplikacja jest nieprawidłowo skonfigurowana”. Pozostałe kody poniżej pochodzą z historycznego SDK play-services-auth 21.6.0 od Google.
| Co widzisz | Co to oznacza | Następny krok |
|---|---|---|
ApiException: 10 lub DEVELOPER_ERROR |
Co to oznaczaBłąd konfiguracji aplikacji | Następny krokPorównaj klucz podpisujący, pakiet, projekt i identyfikatory klienta |
12500 |
Co to oznaczaSIGN_IN_FAILED: „Wystąpił nieodwracalny błąd logowania” |
Następny krokPrzeczytaj otaczające logi; nie traktuj go jak błędu 10 |
12501 |
Co to oznaczaSIGN_IN_CANCELLED: „Logowanie zostało anulowane” |
Następny krokUstal, czy użytkownik anulował logowanie i które API zgłosiło ten kod |
canceled w Credential Manager lub we Flutterze |
Co to oznaczaPrawdziwe anulowanie albo problem z konfiguracją | Następny krokSprawdź szczegóły wyjątku i konfigurację; po diagnozie pozwól użytkownikowi spróbować od nowa |
NoCredentialException |
Co to oznaczaNie zwrócono danych logowania; to nie jest diagnoza certyfikatu | Następny krokSprawdź dostępność konta i konfigurację żądania, a także rejestrację |
| Token Google działa, backend go odrzuca | Co to oznaczaEtap późniejszy niż uzyskanie danych logowania Google | Następny krokSprawdź odbiorcę (audience) i identyfikatory klienta akceptowane przez backend |
redirect_uri_mismatch |
Co to oznaczaPrzekierowanie OAuth w przeglądarce nie pasuje do autoryzowanego URI | Następny krokPopraw konfigurację wywołania zwrotnego (callback) dla tego przepływu |
| „Item not found” w linku do Play | Co to oznaczaProblem z instalacją lub uprawnieniem do testu, a nie z logowaniem | Następny krokWykonaj kontrole dla aplikacji niedostępnej dla testerów |
Starsze Google Sign-In i Credential Manager
Informacje o wersjach usług Google Play podają wycofanie interfejsów API Google Sign-In w play-services-base 16 kwietnia 2024 r., a 11 września 2024 r. Google ogłosił przejście na Credential Manager. Następnie interfejsy te usunięto z play-services-auth 22.0.0 26 sierpnia 2026 r. i z play-services-base 18.11.0 17 września 2026 r., z adnotacją „Usunięto interfejsy API związane z Google Sign-in”. To zmiana w SDK; nie wyznacza ona daty wyłączenia dla aplikacji, które są już zainstalowane. Nowy kod i aktualizacje powinny opierać się na przewodniku po migracji od Google.
Oba interfejsy API zawodzą w różny sposób. Credential Manager nie ma błędu 10; jego przewodnik rozwiązywania problemów ostrzega, że „duża liczba ‚anulowań’ może w rzeczywistości wskazywać na błędną konfigurację”. Anulowanie może więc być błędem konfiguracji albo prawdziwym anulowaniem, a NoCredentialException to jeszcze inny sygnał.
Kontrole dla Fluttera, React Native, Expo i Unity
Opisane wyżej kontrole tożsamości natywnej aplikacji dotyczą każdego frameworka, ale konfiguracja, inicjalizacja i ustawienia kompilacji się różnią. Korzystaj ze ścieżki dla swojego frameworka i z wersji biblioteki, której Twoja aplikacja faktycznie używa.
| Framework | Konkretne kontrole | Nie zakładaj |
|---|---|---|
| Flutter | Konkretne kontroleImplementacja na Androida, google_sign_in_android, przeszła na Credential Manager w wersji 7.0.0. Identyfikator klienta internetowego przekaż jako serverClientId. Jej lista zmian dla wersji 7.2.16 mówi, że poprawka „chroni zasób default_web_client_id przed usunięciem przez narzędzia zmniejszające zasoby”, co ma znaczenie przy błędach występujących tylko w wersji release. |
Nie zakładajŻe każdy wynik canceled to problem z SHA albo że powrót do starszej wersji jest uniwersalną poprawką. |
| React Native | Konkretne kontroleUstal, którego API biblioteki używasz, przekaż identyfikator klienta internetowego jako webClientId i sprawdź faktyczny applicationId oraz plik APK, który zawodzi. Przewodnik rozwiązywania problemów wymienia przypadek „Logowanie nie działa po pobraniu ze Sklepu Play” i podaje polecenie do sprawdzenia konfiguracji (poniżej). |
Nie zakładajŻe zamknięte zgłoszenie w systemie zgłoszeń dowodzi naprawy. |
| Expo | Konkretne kontroleNatywne logowanie przez Google wymaga wersji deweloperskiej lub niestandardowej kompilacji; przewodnik Expo mówi: „Tych bibliotek nie można używać w Expo Go, ponieważ wymagają niestandardowego kodu natywnego”. Nie myl certyfikatu podpisywania EAS ani lokalnego z certyfikatem podpisywania aplikacji w Play. | Nie zakładajŻe Expo Go odtwarza przepływ wersji release albo że ponowna kompilacja naprawi błędny identyfikator klienta w backendzie. |
| Unity | Konkretne kontroleZdecyduj, czy używasz Firebase Authentication, czy Unity Authentication, uzyskaj token identyfikatora Google przez obsługiwaną integrację z platformą, a potem wymień go w tym backendzie (przewodnik Firebase dla Unity). Stary przykład logowania dla Unity od Google zarchiwizowano 19 kwietnia 2026 r. | Nie zakładajŻe logowanie przez Play Games i logowanie kontem Google to ta sama integracja. |
W React Native opiekunowie biblioteki udostępniają narzędzie do sprawdzania konfiguracji, które uruchomisz z katalogu głównego projektu:
npx @react-native-google-signin/config-doctor
Co się zmienia w przypadku Supabase, Facebooka, Apple lub Auth0?
To dostawca i przepływ logowania decydują, który certyfikat, identyfikator klienta lub wywołanie zwrotne musi się zgadzać. SHA-1 Google to odpowiedź dla natywnego logowania przez Google; u innych dostawców może to być niewłaściwy skrót, niewłaściwy format albo coś bez znaczenia.
| Dostawca lub przepływ | Co musi się zgadzać | Gdzie to ustawić |
|---|---|---|
| Natywne logowanie Google z Firebase | Co musi się zgadzaćZainstalowany pakiet i SHA-1, klient internetowy, Google włączony jako dostawca | Gdzie to ustawićOdciski cyfrowe w Project settings w Firebase oraz Authentication |
| Natywne logowanie Google z Supabase | Co musi się zgadzaćNatywna tożsamość aplikacji na Androida i identyfikator klienta internetowego; przewodnik Supabase mówi: „W aplikacji na Androida używa się identyfikatora klienta internetowego”. | Gdzie to ustawićKlienty Google dla Androida i internetowy, a potem ustawienia dostawcy Google w Supabase |
| OAuth Supabase w przeglądarce | Co musi się zgadzaćKlient internetowy, wywołanie zwrotne Supabase i link powrotny Twojej aplikacji | Gdzie to ustawićAutoryzowane identyfikatory URI przekierowania w Google i ustawienia przekierowań w Supabase; poprawka SHA nie ma tu zastosowania |
| Facebook na Androidzie | Co musi się zgadzaćSkrót klucza (key hash) w Base64 utworzony z bajtów SHA-1 certyfikatu podpisywania, a nie zapis szesnastkowy rozdzielony dwukropkami | Gdzie to ustawićUstawienia aplikacji na Facebooku, skróty kluczy Androida (ścieżka opisana w przewodniku Expo dotyczącym Facebooka) |
| Logowanie Apple przez stronę internetową na Androidzie | Co musi się zgadzaćServices ID, domena i adres URL powrotu | Gdzie to ustawićKonfiguracja Sign in with Apple dla stron internetowych od Apple; to nie jest mechanizm DEVELOPER_ERROR od Google |
| Apple przez Firebase na Androidzie | Co musi się zgadzaćKonfiguracja Apple plus SHA-1 aplikacji | Gdzie to ustawićPrzewodnik Firebase dotyczący Apple: „Podaj odcisk cyfrowy SHA-1 aplikacji, jeśli jeszcze tego nie zrobiłeś”. |
| Auth0 na Androidzie | Co musi się zgadzaćDozwolone adresy URL wywołań zwrotnych i schemat aplikacji; tożsamość linków aplikacji tam, gdzie są używane | Gdzie to ustawićUstawienia aplikacji w Auth0; jego plik readme SDK dla Androida używa skrótów kluczy SHA-256 do konfiguracji linków aplikacji |
| Uwierzytelnianie przez telefon w Firebase | Co musi się zgadzaćSHA-256 dla Play Integrity, SHA-1 dla awaryjnego reCAPTCHA | Gdzie to ustawićUwierzytelnianie przez telefon w Firebase: przepływ odrębny od logowania przez Google |
Nie przenoś logowania do WebView
Przekierowanie logowania przez Google przez osadzony WebView nie jest obejściem problemu. Zasady OAuth 2.0 od Google mówią, że deweloperzy „nie mogą kierować żądania autoryzacji Google OAuth 2.0 do osadzonego klienta użytkownika (user-agent)”.
Co testerzy powinni przesłać deweloperowi?
Przydatne zgłoszenie wskazuje wersję z Play, która zawodzi, i dokładny moment, w którym logowanie się zatrzymuje. Tester nie naprawi rejestracji OAuth ponownymi próbami, więc jego zadaniem są dowody, a nie wytrwałość. Skopiuj ten szablon i wyślij go swoim testerom:
Aplikacja i link do testów w Play:
Zainstalowana wersja lub kompilacja aplikacji:
Źródło instalacji: test zamknięty w Play / inna droga
Urządzenie i wersja Androida:
Data, godzina i strefa czasowa:
Dokładna treść błędu lub zrzut ekranu z zamazanymi danymi:
Gdzie się zatrzymało: przed wyborem konta / po wybraniu konta / po powrocie do aplikacji
Czy inną metodą logowania dało się otworzyć aplikację?
Wynik ponownego testu i wersja:
Poproś testerów, żeby na czas naprawy nadal uczestniczyli w teście. Nigdy nie proś o hasła, tokeny OAuth, klucze prywatne ani dostęp do Play Console. Po wprowadzeniu zmiany poproś tego samego testera, żeby otworzył funkcję wymagającą zalogowania, potem wylogował się i zalogował ponownie, a także zapisał wersję i wynik.
Czy błąd 10 wpływa na mój test zamknięty lub dostęp do wersji produkcyjnej?
Błąd konfiguracji logowania to coś innego niż udział testerów w teście. Błąd 10 nie jest kodem odrzucenia za naruszenie zasad Play i nie znaleźliśmy żadnej reguły Google, według której zerowałby okres uczestnictwa Twoich testerów. Strona z wymaganiami dotyczącymi testowania zachęca do ulepszania aplikacji w trakcie testów zamkniętych, więc niech testerzy nadal uczestniczą w teście, a poprawkę opublikuj na tej samej ścieżce zamkniętej. To nasza interpretacja opublikowanych zasad, a nie obietnica obejmująca każdy przypadek.
Niedziałające logowanie nadal ma znaczenie. Zasady Google Play dotyczące funkcjonalności mówią: „Nie zezwalamy na aplikacje, które ulegają awarii, wymuszają zamknięcie, zawieszają się lub w inny sposób działają nieprawidłowo”, a ekran logowania, przez który nie da się przejść, nie pozwala testerom dotrzeć do funkcji, które mają testować. Napraw to, zanim poprosisz o dostęp do wersji produkcyjnej, i przekaż weryfikatorom działające dane logowania. Jeśli wynik weryfikacji już przyszedł, zobacz odrzucenie z powodu niedziałającej funkcjonalności (Broken Functionality).
Dla kontekstu: osobiste konta dewelopera utworzone po 13 listopada 2023 r. potrzebują co najmniej 12 testerów, którzy nieprzerwanie uczestniczą w teście przez 14 dni, zanim poproszą o dostęp do wersji produkcyjnej dla danej aplikacji. Po złożeniu prośby, jak podaje Google, „Zwykle zajmuje to 7 dni lub mniej, ale w niektórych przypadkach może potrwać dłużej”. Jeśli brakuje testerów w liczniku, zanim zaczniesz zmieniać logowanie, sprawdź, jak zostali zaproszeni.
Potrzebujesz prawdziwych testerów na 14 dni?
Testerzy nie naprawią rejestracji OAuth, więc najpierw doprowadź logowanie do działania. Gdy już działa, PrimeTestLab zapewnia 12+ prawdziwych testerów, którzy instalują Twoją wersję z Play na prawdziwych telefonach z Androidem i uczestniczą w teście przez pełne 14 dni, od $19.99 (plus 5% opłaty serwisowej). Jeśli Google nie przyzna dostępu do wersji produkcyjnej po pełnym teście, wybierasz bezpłatny ponowny test lub pełny zwrot pieniędzy. Zobacz, jak działa test zamknięty z 12 testerami.
Najczęściej zadawane pytania
Dlaczego Google Sign-In działa w wersji debug, ale nie w teście zamkniętym?
Twój plik APK w wersji debug i aplikacja pobrana z Google Play mogą być podpisane różnymi certyfikatami, więc zarejestrowanie odcisku cyfrowego debug nie konfiguruje wersji z Play. Zacznij od SHA-1 klucza podpisywania aplikacji w Play, a potem sprawdź ostateczną nazwę pakietu wersji release i identyfikatory klienta, których aplikacja faktycznie używa.
Gdzie teraz znajdę SHA-1 z Play App Signing?
Otwórz stronę Protected with Play swojej aplikacji w Play Console. Pomoc Google opisuje Play Store distribution, a potem Go to Play app signing; inne aktualne teksty Google nazywają te pozycje Play Store protection i Manage Play app signing. Otwórz sekcję App signing key certificate i skopiuj SHA-1, sprawdzając też wszystkie dodatkowe klucze widoczne dla Twojej aplikacji.
Czy do Google Sign-In potrzebuję SHA-1, czy SHA-256?
Klient OAuth Google dla Androida identyfikuje Twoją aplikację po nazwie pakietu i odcisku cyfrowym SHA-1 certyfikatu podpisywania, a SHA-256 nie zastępuje tego pola. Inne usługi mają własne wymagania: uwierzytelnianie przez telefon w Firebase używa SHA-256 dla Play Integrity i SHA-1 dla awaryjnego reCAPTCHA. Skonfiguruj każdą usługę pod przepływ, którego używa Twoja aplikacja.
SHA-1 jest już dodany. Co sprawdzić dalej?
Upewnij się, że należy do aplikacji zainstalowanej z Play, a nie do Twojego klucza przesyłania lub klucza debug. Potem porównaj ostateczny identyfikator aplikacji, projekt Firebase lub Cloud i identyfikator klienta internetowego. Jeśli Twoja aplikacja ma kilka certyfikatów podpisywania, sprawdź także je. Literówka w identyfikatorze klienta akceptowanym przez backend może zepsuć logowanie nawet przy poprawnych odciskach cyfrowych.
Czy po dodaniu odcisku cyfrowego muszę przesłać kolejny plik AAB?
Niekoniecznie. Deweloperzy zgłaszają, że poprawka samej rejestracji w Firebase lub Google Cloud zadziałała na już zainstalowanej aplikacji. Zmieniony identyfikator klienta, plik konfiguracyjny, kod lub zależność muszą dotrzeć do testerów w nowej wersji. Sprawdź, co zmieniłeś, a potem zweryfikuj faktyczną instalację z Play, zamiast raz za razem kompilować aplikację bez diagnozy.
Po jakim czasie nowy odcisk cyfrowy zaczyna działać?
Google nie publikuje czasu propagacji dotyczącego odcisków cyfrowych, a przejrzane przez nas wątki deweloperów żadnego nie zmierzyły. Zapisz poprawną konfigurację i spróbuj ponownie. Jeśli nadal nie działa, zweryfikuj zainstalowany certyfikat i ustawienia klienta, zamiast czekać określoną liczbę godzin, bo czekanie nie naprawia niezgodności.
Dlaczego pojawia się canceled, choć nikt niczego nie anulował?
Niektóre integracje Credential Manager i frameworków zgłaszają problem z konfiguracją lub autoryzacją jako anulowanie, choć anulowanie może też być prawdziwe. Zapisz typ wyjątku i komunikat, sprawdź przewodnik rozwiązywania problemów swojego frameworka i zanim zmienisz ustawienia, odróżnij obecne API od starszego statusu 12501 SIGN_IN_CANCELLED.
Czy do serverClientId wpisuję identyfikator klienta Androida?
Nie. W udokumentowanych natywnych integracjach Google serverClientId lub webClientId to klient OAuth typu aplikacja internetowa, używany w żądaniu tokena. Klient Androida rejestruje natomiast Twój pakiet i certyfikat podpisywania. Skonfiguruj oba i upewnij się, że Twój backend akceptuje zamierzonego odbiorcę tokena, zamiast zamieniać identyfikatory klienta na chybił trafił.
Czy błąd 10 restartuje mój 14-dniowy test zamknięty?
Nie znaleźliśmy żadnej reguły Google, według której ten błąd zerowałby okres uczestnictwa w teście, a Google zachęca do ulepszeń w trakcie testów zamkniętych, więc niech testerzy nadal uczestniczą w teście, a Ty napraw istniejącą ścieżkę. Nie oznacza to, że aplikacja jest gotowa: ekran logowania, przez który nie da się przejść, może uniemożliwić wartościowe testy i zostawić problem z funkcjonalnością, który musisz naprawić przed złożeniem prośby.
O co poprosić testera?
Poproś o zainstalowaną wersję, link do testów w Play, urządzenie i wersję Androida, dokładny błąd oraz krok, na którym logowanie się zatrzymuje. Pomoże zrzut ekranu z zamazanymi danymi lub krótkie nagranie. Po naprawie poproś tego samego testera, żeby użył funkcji wymagającej zalogowania, a potem wylogował się i zalogował ponownie, bez udostępniania jakichkolwiek danych logowania.
Podsumowanie
Podsumowanie
Błąd 10 Google Sign-In oznacza, że aplikacja jest nieprawidłowo skonfigurowana, a gdy zawodzi tylko kopia z Play, certyfikat podpisywania to pierwsza rzecz do sprawdzenia. Skopiuj SHA-1 klucza podpisywania aplikacji z Protected with Play, zarejestruj go z ostateczną nazwą pakietu wersji w tym samym projekcie Firebase lub Google Cloud, którego używa Twoja aplikacja, zostaw identyfikator klienta internetowego w serverClientId i przetestuj ponownie wersję zainstalowaną przez testerów, łącznie z drugim logowaniem. Jeśli nadal nie działa, zanim zmienisz cokolwiek innego, porównaj certyfikat zainstalowanego pliku APK, identyfikator aplikacji i identyfikatory klienta.
Źródła sprawdzone 16 października 2026 r.
Etykiety menu w Play Console i Firebase to najszybciej zmieniające się informacje na tej stronie. Jeśli opisana wyżej ścieżka nie zgadza się już z Twoją konsolą, szukaj podpisywania aplikacji w Play w sekcji Protected with Play, a odcisków cyfrowych przy swojej aplikacji na Androida w Project settings w Firebase.