Obsługa błędów uwierzytelniania w usłudze Firebase Apple Platform

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.