Obsługa błędów uwierzytelniania platform Firebase Apple

Jeśli wywołanie zwrotne zakończenia metod uwierzytelniania otrzyma argument NSError różny od zera, wystąpił błąd. Aby przejść 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 specyficznych dla metody wymienionych poniżej.

Niektóre błędy można rozwiązać, wykonując określone działania użytkownika, na przykład FIRAuthErrorCodeUserTokenExpired można rozwiązać, logując użytkownika ponownie, a FIRAuthErrorCodeWrongPassword , prosząc użytkownika o podanie prawidłowego hasła.

Z wyjątkiem przypadku FIRAuthErrorCodeNetworkError lub FIRAuthErrorCodeTooManyRequests , ponowna próba wykonania zakończonej niepowodzeniem operacji z tymi samymi argumentami nigdy się nie powiedzie. Nie należy zakładać, czy operacja odniosła skutek po stronie serwera.

Badając lub rejestrując błędy, przejrzyj słownik userInfo . FIRAuthErrorNameKey zawiera wieloplatformowy ciąg znaków z nazwą błędu, którego można użyć do zidentyfikowania błędu. NSLocalizedDescriptionKey zawiera opis błędu. Ten opis jest przeznaczony dla programisty, a nie użytkownika. NSUnderlyingErrorKey zawiera błąd podstawowy, który spowodował dany błąd, jeśli występuje błąd podstawowy.

Oprócz głównych pól wymienionych powyżej, w słowniku userInfo mogą znajdować się inne pola, które mogą okazać się przydatne podczas diagnozowania błędów.

Kody błędów wspólne dla wszystkich metod API

Kod Oznaczający
FIRAuthErrorCodeNetworkError Wskazuje, że podczas operacji wystąpił błąd sieciowy.
FIRAuthErrorCodeUserNotFound Wskazuje, że nie znaleziono konta użytkownika. Może się to zdarzyć, jeśli konto użytkownika zostanie usunięte.
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 uwierzytelniania Firebase. Spróbuj ponownie po pewnym czasie.
FIRAuthErrorCodeInvalidAPIKey Wskazuje, że aplikacja została skonfigurowana przy użyciu nieprawidłowego klucza API.
FIRAuthErrorCodeAppNotAuthorized Wskazuje, że aplikacja nie jest autoryzowana do korzystania z uwierzytelniania Firebase przy użyciu dostarczonego klucza API. przejdź do konsoli Google API i sprawdź na karcie poświadczeń, czy używany klucz API ma identyfikator pakietu Twojej aplikacji 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 napotkanym błędzie.
FIRAuthErrorCodeInternalError Wskazuje, że wystąpił błąd wewnętrzny. Proszę zgłosić błąd dotyczący całego obiektu NSError .

Kody błędów specyficzne dla metody

FIRAuth

fetchProvidersForEmail:ukończenie:

Kod Oznaczający
FIRAuthErrorCodeInvalidEmail Wskazuje, że adres e-mail jest zniekształcony.

zaloguj sięWithEmail:hasło:ukończenie:

Kod Oznaczający
FIRAuthErrorCodeOperationNotAllowed Wskazuje, że konta e-mail i hasła nie są włączone. Włącz je w sekcji Auth konsoli Firebase .
FIRAuthErrorCodeInvalidEmail Wskazuje, że adres e-mail jest zniekształcony.
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.

znakInWithCredential:ukończenie:

Kod Oznaczający
FIRAuthErrorCodeInvalidCredential Wskazuje, że podane dane uwierzytelniające są nieprawidłowe. Może się to zdarzyć, jeśli wygasł lub jest zniekształcony.
FIRAuthErrorCodeInvalidEmail Wskazuje, że adres e-mail jest zniekształcony, jeśli poświadczenie jest typu EmailPasswordAuthCredential .
FIRAuthErrorCodeOperationNotAllowed Wskazuje, że konta u dostawcy tożsamości reprezentowanego przez poświadczenie nie są włączone. Włącz je w sekcji Auth konsoli Firebase .
FIRAuthErrorCodeEmailAlreadyInUse Wskazuje, że adres e-mail potwierdzony przez dane uwierzytelniające (np. adres e-mail w tokenie dostępu do Facebooka) jest już używany przez istniejące konto, którego nie można uwierzytelnić za pomocą tej metody logowania. Wywołaj fetchProvidersForEmail aby uzyskać adres e-mail tego użytkownika, a następnie poproś go o zalogowanie się przy użyciu któregokolwiek ze zwróconych dostawców logowania. Ten błąd zostanie zgłoszony tylko wtedy, gdy w konsoli Firebase w obszarze Ustawienia uwierzytelniania włączono 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 poświadczenie jest typu EmailPasswordAuthCredential .

zaloguj się anonimowo z ukończeniem:

Kod Oznaczający
FIRAuthErrorCodeOperationNotAllowed Wskazuje, że konta anonimowe nie są włączone. Włącz je w sekcji Auth konsoli Firebase .

SignInWithCustomToken:ukończenie:

Kod Oznaczający
FIRAuthErrorCodeInvalidCustomToken Wskazuje błąd sprawdzania poprawności tokenu niestandardowego.
FIRAuthErrorCodeCustomTokenMismatch Wskazuje, że konto usługi i klucz API należą do różnych projektów.

utwórzUserWithEmail:hasło:ukończenie:

Kod Oznaczający
FIRAuthErrorCodeInvalidEmail Wskazuje, że adres e-mail jest zniekształcony.
FIRAuthErrorCodeEmailAlreadyInUse Wskazuje, że adres e-mail użyty do próby rejestracji już istnieje. Wywołaj fetchProvidersForEmail , aby sprawdzić, z jakich mechanizmów logowania korzystał taki użytkownik, i poproś go o zalogowanie się przy użyciu jednego z nich.
FIRAuthErrorCodeOperationNotAllowed Wskazuje, że konta e-mail i hasła nie są włączone. Włącz je w sekcji Uwierzytelnianie konsoli Firebase .
FIRAuthErrorCodeWeakPassword Wskazuje próbę ustawienia hasła, które jest uważane za zbyt słabe. Pole NSLocalizedFailureReasonErrorKey w obiekcie słownika NSError.userInfo będzie zawierać bardziej szczegółowe wyjaśnienie, które będzie można pokazać użytkownikowi.

Wyloguj się:

Kod Oznaczający
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 napotkanym błędzie.

FIRUser

Typowe błędy w operacjach FIRUser

Kod Oznaczający
FIRAuthErrorCodeInvalidUserToken Wskazuje, że token odświeżania zalogowanego użytkownika, który przechowuje 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 już używać, dopóki nie zostanie ponownie włączone w panelu Użytkownicy w konsoli Firebase.

ponownie uwierzytelnij za pomocą poświadczenia:ukończenie:

Kod Oznaczający
FIRAuthErrorCodeInvalidCredential Wskazuje, że podane dane uwierzytelniające są nieprawidłowe. Może się to zdarzyć, jeśli wygasł lub jest zniekształcony.
FIRAuthErrorCodeInvalidEmail Wskazuje, że adres e-mail jest zniekształcony, jeśli poświadczenie jest typu EmailPasswordAuthCredential .
FIRAuthErrorCodeWrongPassword Wskazuje, że użytkownik podjął próbę ponownego uwierzytelnienia przy użyciu nieprawidłowego hasła, jeśli poświadczenie jest typu EmailPasswordAuthCredential .
FIRAuthErrorCodeUserMismatch Wskazuje, że podjęto próbę ponownego uwierzytelnienia przy użyciu użytkownika, który nie jest bieżącym użytkownikiem.
FIRAuthErrorCodeOperationNotAllowed Wskazuje, że konta u dostawcy tożsamości reprezentowanego przez poświadczenie nie są włączone. Włącz je w sekcji Auth konsoli Firebase .
FIRAuthErrorCodeEmailAlreadyInUse Wskazuje, że adres e-mail potwierdzony przez dane uwierzytelniające (np. adres e-mail w tokenie dostępu do Facebooka) jest już używany przez istniejące konto, którego nie można ponownie uwierzytelnić za pomocą tej metody logowania. Wywołaj fetchProvidersForEmail aby uzyskać adres e-mail tego użytkownika, a następnie poproś go o zalogowanie się przy użyciu któregokolwiek ze zwróconych dostawców logowania. Ten błąd zostanie zgłoszony tylko wtedy, gdy w konsoli Firebase w obszarze Ustawienia uwierzytelniania włączono ustawienie „Jedno konto na adres e-mail”.
FIRAuthErrorCodeUserDisabled Wskazuje, że konto użytkownika jest wyłączone.

aktualizacjaE-mail:ukończenie:

Kod Oznaczający
FIRAuthErrorCodeEmailAlreadyInUse Wskazuje, że adres e-mail jest już używany przez inne konto.
FIRAuthErrorCodeInvalidEmail Wskazuje, że adres e-mail jest zniekształcony.
FIRAuthErrorCodeRequiresRecentLogin Aktualizowanie adresu e-mail użytkownika jest operacją mającą istotne znaczenie dla bezpieczeństwa i wymaga niedawnego zalogowania się użytkownika. Ten błąd oznacza, że ​​użytkownik nie zalogował się wystarczająco niedawno. Aby rozwiązać problem, ponownie uwierzytelnij użytkownika, wywołując polecenie reauthenticateWithCredential:completion: na FIRUser .

aktualizacjaHasło:ukończenie:

Kod Oznaczający
FIRAuthErrorCodeOperationNotAllowed Wskazuje, że administrator wyłączył logowanie przy użyciu określonego dostawcy tożsamości.
FIRAuthErrorCodeRequiresRecentLogin Aktualizacja hasła użytkownika jest operacją wymagającą niedawnego zalogowania się użytkownika. Ten błąd oznacza, że ​​użytkownik nie zalogował się wystarczająco niedawno. Aby rozwiązać problem, ponownie uwierzytelnij użytkownika, wywołując polecenie reauthenticateWithCredential:completion: na FIRUser .
FIRAuthErrorCodeWeakPassword Wskazuje próbę ustawienia hasła, które jest uważane za zbyt słabe. Pole NSLocalizedFailureReasonErrorKey w obiekcie słownika NSError.userInfo będzie zawierać bardziej szczegółowe wyjaśnienie, które będzie można pokazać użytkownikowi.

linkWithCredential:ukończenie:

Kod Oznaczający
FIRAuthErrorCodeProviderAlreadyLinked Wskazuje próbę połączenia dostawcy typu już połączonego z tym kontem.
FIRAuthErrorCodeCredentialAlreadyInUse Wskazuje próbę połączenia z danymi uwierzytelniającymi, które zostały już połączone z innym kontem Firebase.
FIRAuthErrorCodeOperationNotAllowed Wskazuje, że konta u dostawcy tożsamości reprezentowanego przez poświadczenie nie są włączone. Włącz je w sekcji Auth konsoli Firebase .

Ta metoda może również zwracać kody błędów powiązane z updateEmail:completion: i updatePassword:completion: na FIRUser .

unlinkFrovider:ukończenie:

Kod Oznaczający
FIRAuthErrorCodeNoSuchProvider Wskazuje próbę odłączenia dostawcy, który nie jest powiązany z kontem.
FIRAuthErrorCodeRequiresRecentLogin Aktualizowanie poczty e-mail to operacja wymagająca bezpieczeństwa, która wymaga niedawnego zalogowania się użytkownika. Ten błąd oznacza, że ​​użytkownik nie zalogował się wystarczająco niedawno. Aby rozwiązać problem, ponownie uwierzytelnij użytkownika, wywołując polecenie reauthenticateWithCredential:completion: na FIRUser .

wyślijE-mailWeryfikacjaWithCompletion:

Kod Oznaczający
FIRAuthErrorCodeUserNotFound Wskazuje, że nie znaleziono konta użytkownika.

usuńWithCompletion:

Kod Oznaczający
FIRAuthErrorCodeRequiresRecentLogin Usunięcie konta użytkownika jest operacją mającą istotne znaczenie dla bezpieczeństwa i wymaga niedawnego zalogowania się użytkownika. Ten błąd oznacza, że ​​użytkownik nie zalogował się wystarczająco niedawno. Aby rozwiązać problem, ponownie uwierzytelnij użytkownika, wywołując polecenie reauthenticateWithCredential:completion: na FIRUser .