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

Jeśli wywołanie zwrotne polegające na zakończeniu w metodach Authentication otrzymuje argument NSError, który: nie ma wartości nil, wystąpił błąd. W celu wysłania zgłoszenia do odpowiedniej obsługi błędów w kodzie produkcyjnym, sprawdź kod błędu pod kątem typowych błędów i wymienionych poniżej.

Niektóre błędy można usunąć dzięki konkretnym działaniom użytkownika. Na przykład: Problem FIRAuthErrorCodeUserTokenExpired można rozwiązać, logując użytkownika oraz FIRAuthErrorCodeWrongPassword, prosząc użytkownika o podanie poprawne hasło.

Z wyjątkiem sytuacji FIRAuthErrorCodeNetworkError i FIRAuthErrorCodeTooManyRequests, ponawiam nieudaną operację z tą samą wartością argumentów nigdy nie zadziała. Nie zgaduj, czy operacja zaszła po stronie serwera.

Podczas badania lub logowania błędów sprawdź słownik userInfo. Pole FIRAuthErrorNameKey zawiera ciąg z nazwą błędu na wielu platformach, do którego używane do identyfikacji błędu. NSLocalizedDescriptionKey zawiera opis błędu. Ten jest przeznaczona dla dewelopera, a nie użytkownika. NSUnderlyingErrorKey zawiera błąd, który spowodował błąd w czy nie wystąpił błąd.

Oprócz wymienionych powyżej pól głównych dostępne mogą być też inne pola Słownik userInfo, który może 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 nieprawidłowej liczby żądań z urządzenia wywołującego do serwerów Firebase Authentication. 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 z danymi logowania sprawdź, czy używany przez Ciebie klucz interfejsu API został umieszczony 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 jest zgłaszany tylko wtedy, gdy opcja „Jedno konto na każdy adres e-mail” jest włączone w konsoli Firebase w sekcji ustawień Authentication.
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. Włącz je w sekcji Authentication 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. adres e-mail 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 jest zgłaszany tylko wtedy, gdy opcja „Jedno konto na każdy adres e-mail” jest włączone w konsoli Firebase w sekcji ustawień Authentication.
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 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.

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ż zwrócić kody błędów związane z metodami updateEmail:completion: oraz updatePassword:completion: 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.