Jeśli wywołanie zwrotne polegające na zakończeniu metod uwierzytelniania otrzymuje argument NSError
, który nie ma wartości nil, wystąpił błąd. Aby wysłać do odpowiedniej logiki obsługi błędów w kodzie produkcyjnym, sprawdź kod błędu pod kątem typowych błędów i błędów konkretnych metod wymienionych poniżej.
Niektóre błędy można rozwiązać przez określone działania użytkownika. Na przykład FIRAuthErrorCodeUserTokenExpired
można usunąć, ponownie logując użytkownika. FIRAuthErrorCodeWrongPassword
można też poprosić użytkownika o podanie prawidłowego hasła.
Ponowienie nieudanej operacji przy użyciu tych samych argumentów nigdy się nie powiedzie. Nie dotyczy to sytuacji FIRAuthErrorCodeNetworkError
i FIRAuthErrorCodeTooManyRequests
. Nie należy uzależniać od tego, czy operacja zadziałała po stronie serwera.
Podczas badania lub logowania błędów sprawdź słownik userInfo
.
FIRAuthErrorNameKey
zawiera ciąg znaków z nazwą błędu na wielu platformach, którego można użyć do jego identyfikacji.
NSLocalizedDescriptionKey
zawiera opis błędu. Ten opis jest przeznaczony dla dewelopera, a nie użytkownika.
Jeśli występuje błąd, NSUnderlyingErrorKey
zawiera błąd, który go spowodował.
Oprócz pól głównych wymienionych powyżej w słowniku userInfo
dostępne są też inne pola, które mogą się przydać podczas diagnozowania błędów.
Kody błędów wspólne dla wszystkich metod interfejsu API
Kod |
Znaczenie |
FIRAuthErrorCodeNetworkError |
Wskazuje, że podczas wykonywania operacji wystąpił błąd sieci. |
FIRAuthErrorCodeUserNotFound |
Wskazuje, że nie znaleziono konta użytkownika. Przyczyną może być usunięcie konta użytkownika. |
FIRAuthErrorCodeUserTokenExpired |
Wskazuje, że token bieżącego użytkownika wygasł – na przykład użytkownik mógł zmienić hasło do konta na innym urządzeniu. Musisz poprosić użytkownika o ponowne zalogowanie się na tym urządzeniu. |
FIRAuthErrorCodeTooManyRequests |
Wskazuje, że żądanie zostało zablokowane po wysłaniu nietypowej liczby żądań z urządzenia wywołującego do serwerów uwierzytelniania Firebase. Spróbuj ponownie później. |
FIRAuthErrorCodeInvalidAPIKey |
Wskazuje, że aplikacja została skonfigurowana przy użyciu nieprawidłowego klucza interfejsu API. |
FIRAuthErrorCodeAppNotAuthorized |
Wskazuje, że aplikacja nie ma uprawnień do korzystania z uwierzytelniania Firebase przy użyciu podanego klucza interfejsu API. Otwórz Konsolę interfejsów API Google i na karcie danych logowania sprawdź, czy identyfikator pakietu Twojej aplikacji, którego używasz, znajduje się na białej liście. |
FIRAuthErrorCodeKeychainError |
Wskazuje, że wystąpił błąd podczas uzyskiwania dostępu do pęku kluczy. Pola NSLocalizedFailureReasonErrorKey i NSUnderlyingErrorKey w słowniku NSError.userInfo będą zawierać więcej informacji o tym błędzie. |
FIRAuthErrorCodeInternalError |
Wskazuje, że wystąpił błąd wewnętrzny. Zgłoś błąd, podając cały obiekt NSError . |
Kody błędów dotyczące konkretnych metod
FIRAuth
downloadProvidersForEmail:completion:
Kod |
Znaczenie |
FIRAuthErrorCodeInvalidEmail |
Wskazuje, że adres e-mail jest uszkodzony. |
signInWithEmail:hasło:uzupełnienie:
Kod |
Znaczenie |
FIRAuthErrorCodeOperationNotAllowed |
Wskazuje, że konta z pocztą e-mail i hasłami nie są włączone. Możesz je włączyć w sekcji Uwierzytelnianie w konsoli Firebase. |
FIRAuthErrorCodeInvalidEmail |
Wskazuje, że adres e-mail jest uszkodzony. |
FIRAuthErrorCodeUserDisabled |
Wskazuje, że konto użytkownika jest wyłączone. |
FIRAuthErrorCodeWrongPassword |
Wskazuje, że użytkownik próbował się zalogować za pomocą nieprawidłowego hasła. |
signInWithCredential:completion:
Kod |
Znaczenie |
FIRAuthErrorCodeInvalidCredential |
Wskazuje, że podane dane logowania są nieprawidłowe. Przyczyną może być to, że stracił ważność lub jest uszkodzony. |
FIRAuthErrorCodeInvalidEmail |
Wskazuje, że adres e-mail jest uszkodzony, jeśli dane logowania są typu EmailPasswordAuthCredential . |
FIRAuthErrorCodeOperationNotAllowed |
Wskazuje, że konta z dostawcą tożsamości reprezentowanym przez dane logowania nie są włączone. Możesz je włączyć w sekcji Uwierzytelnianie w konsoli Firebase. |
FIRAuthErrorCodeEmailAlreadyInUse |
Wskazuje, że adres e-mail potwierdzony przez dane logowania (np. adres e-mail w tokenie dostępu Facebooka) jest już używany przez istniejące konto, którego nie można uwierzytelnić za pomocą tej metody logowania. Zadzwoń pod numer fetchProvidersForEmail , aby otrzymać adres e-mail tego użytkownika, i poproś go o zalogowanie się za pomocą dowolnego z pozostałych dostawców logowania. Ten błąd będzie zgłaszany tylko wtedy, gdy w konsoli Firebase w sekcji Ustawienia uwierzytelniania włączone jest ustawienie „Jedno konto na adres e-mail”. |
FIRAuthErrorCodeUserDisabled |
Wskazuje, że konto użytkownika jest wyłączone. |
FIRAuthErrorCodeWrongPassword |
Wskazuje, że użytkownik próbował zalogować się przy użyciu nieprawidłowego hasła, jeśli dane logowania są typu EmailPasswordAuthCredential . |
Zaloguj sięAnonimowoZDokończeniem:
Kod |
Znaczenie |
FIRAuthErrorCodeOperationNotAllowed |
Wskazuje, że konta anonimowe nie są włączone. Możesz je włączyć w sekcji Uwierzytelnianie w konsoli Firebase. |
signInWithCustomToken:complete:
Kod |
Znaczenie |
FIRAuthErrorCodeInvalidCustomToken |
Wskazuje błąd weryfikacji tokena niestandardowego. |
FIRAuthErrorCodeCustomTokenMismatch |
Wskazuje, że konto usługi i klucz interfejsu API należą do różnych projektów. |
createUserWithEmail:password:complete:
Kod |
Znaczenie |
FIRAuthErrorCodeInvalidEmail |
Wskazuje, że adres e-mail jest uszkodzony. |
FIRAuthErrorCodeEmailAlreadyInUse |
Wskazuje, że adres e-mail użyty do próby rejestracji już istnieje. Wywołaj fetchProvidersForEmail , aby sprawdzić, których mechanizmów logowania używał dany użytkownik, i poproś go o zalogowanie się przy użyciu jednego z nich. |
FIRAuthErrorCodeOperationNotAllowed |
Wskazuje, że konta z pocztą e-mail i hasłami nie są włączone. Możesz je włączyć w sekcji Uwierzytelnianie w konsoli Firebase. |
FIRAuthErrorCodeWeakPassword |
Wskazuje próbę ustawienia hasła, które jest uznawane za zbyt słabe. Pole NSLocalizedFailureReasonErrorKey w obiekcie słownika NSError.userInfo zawiera bardziej szczegółowe wyjaśnienie, które może zobaczyć użytkownik. |
Wyloguj się:
Kod |
Znaczenie |
FIRAuthErrorCodeKeychainError |
Wskazano błąd podczas uzyskiwania dostępu do pęku kluczy. Pola NSLocalizedFailureReasonErrorKey i NSUnderlyingErrorKey w słowniku NSError.userInfo będą zawierać więcej informacji o tym błędzie. |
FIRUser
Typowe błędy przy operacjach FIRUser
Kod |
Znaczenie |
FIRAuthErrorCodeInvalidUserToken |
Wskazuje, że token odświeżania zalogowanego użytkownika, który zawiera informacje o sesji, jest nieprawidłowy. Musisz poprosić użytkownika o ponowne zalogowanie się na tym urządzeniu. |
FIRAuthErrorCodeUserDisabled |
Wskazuje, że konto użytkownika jest wyłączone i nie można go używać, dopóki nie zostanie ponownie włączony w panelu Użytkownicy w konsoli Firebase. |
reauthenticateWithCredential:completion:
Kod |
Znaczenie |
FIRAuthErrorCodeInvalidCredential |
Wskazuje, że podane dane logowania są nieprawidłowe. Przyczyną może być to, że stracił ważność lub jest uszkodzony. |
FIRAuthErrorCodeInvalidEmail |
Wskazuje, że adres e-mail jest uszkodzony, jeśli dane logowania są typu EmailPasswordAuthCredential . |
FIRAuthErrorCodeWrongPassword |
Wskazuje, że użytkownik próbował ponownie uwierzytelnić się przy użyciu nieprawidłowego hasła, jeśli dane logowania są typu EmailPasswordAuthCredential . |
FIRAuthErrorCodeUserMismatch |
Wskazuje, że podjęto próbę ponownego uwierzytelnienia u użytkownika, który nie jest bieżącym użytkownikiem. |
FIRAuthErrorCodeOperationNotAllowed |
Wskazuje, że konta z dostawcą tożsamości reprezentowanym przez dane logowania nie są włączone. Możesz je włączyć w sekcji Uwierzytelnianie w konsoli Firebase. |
FIRAuthErrorCodeEmailAlreadyInUse |
Wskazuje, że adres e-mail potwierdzony przez dane logowania (np. w tokenie dostępu Facebooka) jest już używany przez istniejące konto, którego nie można ponownie uwierzytelnić za pomocą tej metody logowania. Zadzwoń pod numer fetchProvidersForEmail , aby otrzymać adres e-mail tego użytkownika, i poproś go o zalogowanie się za pomocą dowolnego z pozostałych dostawców logowania. Ten błąd będzie zgłaszany tylko wtedy, gdy w konsoli Firebase w sekcji Ustawienia uwierzytelniania włączone jest ustawienie „Jedno konto na adres e-mail”. |
FIRAuthErrorCodeUserDisabled |
Wskazuje, że konto użytkownika jest wyłączone. |
updateEmail:complete:
Kod |
Znaczenie |
FIRAuthErrorCodeEmailAlreadyInUse |
Wskazuje, że adres e-mail jest już używany przez inne konto. |
FIRAuthErrorCodeInvalidEmail |
Wskazuje, że adres e-mail jest uszkodzony. |
FIRAuthErrorCodeRequiresRecentLogin |
Aktualizowanie adresu e-mail użytkownika jest ważną operacją z punktu widzenia bezpieczeństwa, która wymaga ostatniego zalogowania się użytkownika. Ten błąd oznacza, że użytkownik nie zalogował się jeszcze wystarczająco długo. Aby rozwiązać ten problem, ponownie uwierzytelnij użytkownika, wywołując funkcję reauthenticateWithCredential:completion: w systemie FIRUser . |
updatePassword:complete:
Kod |
Znaczenie |
FIRAuthErrorCodeOperationNotAllowed |
Wskazuje, że administrator wyłączył logowanie się przy użyciu określonego dostawcy tożsamości. |
FIRAuthErrorCodeRequiresRecentLogin |
Aktualizowanie hasła użytkownika jest operacjami związanymi z bezpieczeństwem, które wymaga ostatniego logowania. Ten błąd oznacza, że użytkownik nie zalogował się jeszcze wystarczająco długo. Aby rozwiązać ten problem, ponownie uwierzytelnij użytkownika, wywołując funkcję reauthenticateWithCredential:completion: w systemie FIRUser . |
FIRAuthErrorCodeWeakPassword |
Wskazuje próbę ustawienia hasła, które jest uznawane za zbyt słabe. Pole NSLocalizedFailureReasonErrorKey w obiekcie słownika NSError.userInfo zawiera bardziej szczegółowe wyjaśnienie, które może zobaczyć użytkownik. |
linkWithCredential:completion:
Kod |
Znaczenie |
FIRAuthErrorCodeProviderAlreadyLinked |
Wskazuje próbę połączenia dostawcy typu już powiązanego z tym kontem. |
FIRAuthErrorCodeCredentialAlreadyInUse |
Wskazuje próbę połączenia z danymi logowania, które zostały już połączone z innym kontem Firebase. |
FIRAuthErrorCodeOperationNotAllowed |
Wskazuje, że konta z dostawcą tożsamości reprezentowanym przez dane logowania nie są włączone. Możesz je włączyć w sekcji Uwierzytelnianie w konsoli Firebase. |
Ta metoda może też zwracać kody błędów powiązanych z metodami updateEmail:completion:
i updatePassword:completion:
w systemie FIRUser
.
StatementFromProvider:completion:
Kod |
Znaczenie |
FIRAuthErrorCodeNoSuchProvider |
Wskazuje próbę odłączenia dostawcy, który nie jest połączony z kontem. |
FIRAuthErrorCodeRequiresRecentLogin |
Aktualizowanie adresu e-mail to operacja zależna od bezpieczeństwa, która wymaga od użytkownika ostatniego logowania. Ten błąd oznacza, że użytkownik nie zalogował się jeszcze wystarczająco długo. Aby rozwiązać ten problem, ponownie uwierzytelnij użytkownika, wywołując funkcję reauthenticateWithCredential:completion: w systemie FIRUser . |
sendEmailWeryfikacjaWith Prowadzenie:
Kod |
Znaczenie |
FIRAuthErrorCodeUserNotFound |
Wskazuje, że nie znaleziono konta użytkownika. |
deleteWithComplete:
Kod |
Znaczenie |
FIRAuthErrorCodeRequiresRecentLogin |
Usunięcie konta użytkownika jest poważną operacją z punktu widzenia bezpieczeństwa, które wymaga ostatniego zalogowania się użytkownika. Ten błąd oznacza, że użytkownik nie zalogował się jeszcze wystarczająco długo. Aby rozwiązać ten problem, ponownie uwierzytelnij użytkownika, wywołując funkcję reauthenticateWithCredential:completion: w systemie FIRUser . |