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

Jeśli wywołanie zwrotne zakończenia metod uwierzytelniania otrzyma argument NSError , który nie jest 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 specyficznych dla metody wymienionych poniżej.

Niektóre błędy można rozwiązać za pomocą określonych działań 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 operacji zakończonej niepowodzeniem z tymi samymi argumentami nigdy się nie powiedzie. Nie zakładaj, czy operacja odniosła skutek po stronie serwera.

Podczas badania lub rejestrowania błędów przejrzyj słownik userInfo . FIRAuthErrorNameKey zawiera międzyplatformowy ciąg nazwy błędu, którego można użyć do identyfikacji 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ą być 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 sieci.
FIRAuthErrorCodeUserNotFound Wskazuje, że nie znaleziono konta użytkownika. Może się to zdarzyć, jeśli konto użytkownika zostało 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 za jakiś czas.
FIRAuthErrorCodeInvalidAPIKey Wskazuje, że aplikacja została skonfigurowana przy użyciu nieprawidłowego klucza API.
FIRAuthErrorCodeAppNotAuthorized Wskazuje, że aplikacja nie jest uprawniona do korzystania z uwierzytelniania Firebase za pomocą dostarczonego klucza API. przejdź do Konsoli API Google i sprawdź na karcie poświadczeń, czy klucz API, którego używasz, ma na białej liście identyfikator pakietu Twojej aplikacji.
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 z całym obiektem NSError .

Kody błędów specyficzne dla metody

FIRAuth

fetchProvidersForEmail:zakończenie:

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

zaloguj się przez e-mail: 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ł się zalogować przy użyciu nieprawidłowego hasła.

zaloguj się za pomocą poświadczeń: ukończenie:

Kod Oznaczający
FIRAuthErrorCodeInvalidCredential Wskazuje, że podane poświadczenie jest 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 z dostawcą tożsamości reprezentowanym przez poświadczenie nie są włączone. Włącz je w sekcji Auth konsoli Firebase .
FIRAuthErrorCodeEmailAlreadyInUse Wskazuje, że adres e-mail potwierdzony przez poświadczenie (np. adres e-mail w tokenie dostępu do serwisu Facebook) 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 dowolnego zwróconego dostawcy logowania. Ten błąd zostanie zgłoszony tylko wtedy, gdy ustawienie „Jedno konto na adres e-mail” jest włączone w konsoli Firebase w obszarze Ustawienia uwierzytelniania.
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 Dokoń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 weryfikacji z tokenem niestandardowym.
FIRAuthErrorCodeCustomTokenMismatch Wskazuje, że konto usługi i klucz API należą do różnych projektów.

createUserWithEmail:hasło:zakoń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ę za pomocą 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ło bardziej szczegółowe wyjaśnienie, które można wyświetlić użytkownikowi.

Wyloguj się:

Kod Oznaczający
FIRAuthErrorCodeKeychainError Wskazał, ż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 dla operacji 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 już z niego korzystać, dopóki nie zostanie ponownie włączone w panelu Użytkownicy w konsoli Firebase.

ponowne uwierzytelnienie WithCredential: zakończenie:

Kod Oznaczający
FIRAuthErrorCodeInvalidCredential Wskazuje, że podane poświadczenie jest 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 próbował ponownie uwierzytelnić się z niepoprawnym hasłem, jeśli poświadczenie jest typu EmailPasswordAuthCredential .
FIRAuthErrorCodeUserMismatch Wskazuje, że podjęto próbę ponownego uwierzytelnienia użytkownika, który nie jest bieżącym użytkownikiem.
FIRAuthErrorCodeOperationNotAllowed Wskazuje, że konta z dostawcą tożsamości reprezentowanym przez poświadczenie nie są włączone. Włącz je w sekcji Auth konsoli Firebase .
FIRAuthErrorCodeEmailAlreadyInUse Wskazuje, że adres e-mail potwierdzony przez poświadczenie (np. adres e-mail w tokenie dostępu do serwisu Facebook) 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 dowolnego zwróconego dostawcy logowania. Ten błąd zostanie zgłoszony tylko wtedy, gdy ustawienie „Jedno konto na adres e-mail” jest włączone w konsoli Firebase w obszarze Ustawienia uwierzytelniania.
FIRAuthErrorCodeUserDisabled Wskazuje, że konto użytkownika jest wyłączone.

aktualizacjaE-mail:zakoń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 Aktualizacja adresu e-mail użytkownika jest operacją wrażliwą pod względem bezpieczeństwa, która wymaga niedawnego zalogowania się przez użytkownika. Ten błąd wskazuje, że użytkownik nie zalogował się wystarczająco niedawno. Aby rozwiązać problem, ponownie uwierzytelnij użytkownika, wywołując reauthenticateWithCredential:completion: on FIRUser .

aktualizacjaHasło:ukończenie:

Kod Oznaczający
FIRAuthErrorCodeOperationNotAllowed Wskazuje, że administrator wyłączył logowanie z określonym dostawcą tożsamości.
FIRAuthErrorCodeRequiresRecentLogin Aktualizacja hasła użytkownika jest operacją wrażliwą na bezpieczeństwo, która wymaga niedawnego zalogowania się przez użytkownika. Ten błąd wskazuje, że użytkownik nie zalogował się wystarczająco niedawno. Aby rozwiązać problem, ponownie uwierzytelnij użytkownika, wywołując reauthenticateWithCredential:completion: on 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ło bardziej szczegółowe wyjaśnienie, które można wyświetlić użytkownikowi.

linkWithCredential:ukończenie:

Kod Oznaczający
FIRAuthErrorCodeProviderAlreadyLinked Wskazuje na 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 z dostawcą tożsamości reprezentowanym 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 związane z updateEmail:completion: i updatePassword:completion: on FIRUser .

odłączenie od dostawcy: ukończenie:

Kod Oznaczający
FIRAuthErrorCodeNoSuchProvider Wskazuje próbę odłączenia dostawcy, który nie jest połączony z kontem.
FIRAuthErrorCodeRequiresRecentLogin Aktualizacja poczty e-mail to operacja wrażliwa pod względem bezpieczeństwa, która wymaga niedawnego zalogowania się przez użytkownika. Ten błąd wskazuje, że użytkownik nie zalogował się wystarczająco niedawno. Aby rozwiązać problem, ponownie uwierzytelnij użytkownika, wywołując reauthenticateWithCredential:completion: on FIRUser .

sendEmailVerification WithCompletion:

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

usuń z zakończeniem:

Kod Oznaczający
FIRAuthErrorCodeRequiresRecentLogin Usunięcie konta użytkownika jest operacją wrażliwą na bezpieczeństwo, która wymaga niedawnego zalogowania się przez użytkownika. Ten błąd wskazuje, że użytkownik nie zalogował się wystarczająco niedawno. Aby rozwiązać problem, ponownie uwierzytelnij użytkownika, wywołując reauthenticateWithCredential:completion: on FIRUser .