Jeśli wywołanie zwrotne po zakończeniu działania metod Authentication otrzyma argument NSError o wartości, która
nie jest nil, oznacza to, że wystąpił błąd. Aby przekierować do odpowiedniej logiki obsługi błędów w kodzie produkcyjnym, sprawdź kod błędu w porównaniu z typowymi błędami i błędami specyficznymi dla metody wymienionymi poniżej.
Niektóre błędy można rozwiązać, wykonując określone działania, np. FIRAuthErrorCodeUserTokenExpired można rozwiązać, ponownie logując użytkownika, a FIRAuthErrorCodeWrongPassword – prosząc użytkownika o podanie prawidłowego hasła.
Z wyjątkiem przypadków FIRAuthErrorCodeNetworkError lub FIRAuthErrorCodeTooManyRequests ponawianie nieudanej operacji z tymi samymi argumentami nigdy się nie powiedzie. Nie zakładaj, że operacja została wykonana po stronie serwera.
Podczas analizowania lub rejestrowania błędów sprawdź słownik userInfo.
FIRAuthErrorNameKey zawiera ciąg tekstowy z nazwą błędu na wielu platformach, który można
wykorzystać do identyfikacji błędu.
NSLocalizedDescriptionKey zawiera opis błędu. Ten opis jest przeznaczony dla dewelopera, a nie dla użytkownika.
NSUnderlyingErrorKey zawiera podstawowy błąd, który spowodował dany błąd, jeśli taki błąd występuje.
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 |
Znaczenie |
FIRAuthErrorCodeNetworkError |
Wskazuje, że podczas operacji wystąpił błąd sieci. |
FIRAuthErrorCodeUserNotFound |
Wskazuje, że nie znaleziono konta użytkownika. Może się tak zdarzyć, jeśli konto użytkownika zostało usunięte. |
FIRAuthErrorCodeUserTokenExpired |
Wskazuje, że token bieżącego użytkownika wygasł. Użytkownik mógł na przykład 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 tym, jak z urządzenia wywołującego wysłano do serwerów Firebase Authentication nienormalną liczbę żądań. Za jakiś czas spróbuj ponownie. |
FIRAuthErrorCodeInvalidAPIKey |
Wskazuje, że aplikacja została skonfigurowana przy użyciu nieprawidłowego klucza interfejsu API. |
FIRAuthErrorCodeAppNotAuthorized |
Wskazuje, że aplikacja nie jest uprawniona do korzystania z Uwierzytelniania Firebase z podanym kluczem interfejsu API. Otwórz Konsolę interfejsów API Google i na karcie Credentials (Dane logowania) sprawdź, czy klucz interfejsu API, którego używasz, ma na białej liście identyfikator pakietu Twojej aplikacji. |
FIRAuthErrorCodeKeychainError |
Wskazuje, że podczas uzyskiwania dostępu do pęku kluczy wystąpił błąd. 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. Zgłoś błąd, podając cały obiekt NSError. |
Kody błędów specyficzne dla metody
FIRAuth
fetchProvidersForEmail:completion:
| Kod |
Znaczenie |
FIRAuthErrorCodeInvalidEmail |
Wskazuje, że adres e-mail jest nieprawidłowy. |
signInWithEmail:password:completion:
| Kod |
Znaczenie |
FIRAuthErrorCodeOperationNotAllowed |
Wskazuje, że konta e-mail i hasła nie są włączone. Włącz je w konsoli Firebase (otwórz kartę Security (Zabezpieczenia) > Authentication (Uwierzytelnianie) > Sign-in method (Metoda logowania)). |
FIRAuthErrorCodeInvalidEmail |
Wskazuje, że adres e-mail jest nieprawidłowy. |
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. |
signInWithCredential:completion:
| Kod |
Znaczenie |
FIRAuthErrorCodeInvalidCredential |
Wskazuje, że podane dane logowania są nieprawidłowe. Może się tak zdarzyć, jeśli dane logowania wygasły lub są nieprawidłowe. |
FIRAuthErrorCodeInvalidEmail |
Wskazuje, że adres e-mail jest nieprawidłowy, jeśli dane logowania są typu EmailPasswordAuthCredential. |
FIRAuthErrorCodeOperationNotAllowed |
Wskazuje, że konta u dostawcy tożsamości reprezentowanego przez dane logowania nie są włączone. Włącz je w konsoli Firebase (otwórz kartę Security (Zabezpieczenia) > Authentication (Uwierzytelnianie) > Sign-in method (Metoda logowania)). |
FIRAuthErrorCodeEmailAlreadyInUse |
Wskazuje, że adres e-mail potwierdzony przez dane logowania (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 w przypadku adresu e-mail tego użytkownika, a następnie poproś go o zalogowanie się za pomocą jednego z zwróconych dostawców logowania. Ten błąd zostanie zgłoszony tylko wtedy, gdy w konsoli Firebase włączona jest opcja „One account per email address” (Jedno konto na adres e-mail) (otwórz kartę Security (Zabezpieczenia) > Authentication (Uwierzytelnianie) > Settings (Ustawienia)). |
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. |
signInAnonymouslyWithCompletion:
| Kod |
Znaczenie |
FIRAuthErrorCodeOperationNotAllowed |
Wskazuje, że konta anonimowe nie są włączone. Włącz je w konsoli Firebase (otwórz kartę Security (Zabezpieczenia) > Authentication (Uwierzytelnianie) > Sign-in method (Metoda logowania)). |
signInWithCustomToken:completion:
| 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:completion:
| Kod |
Znaczenie |
FIRAuthErrorCodeInvalidEmail |
Wskazuje, że adres e-mail jest nieprawidłowy. |
FIRAuthErrorCodeEmailAlreadyInUse |
Wskazuje, że adres e-mail użyty do próby rejestracji już istnieje. Wywołaj fetchProvidersForEmail, aby sprawdzić, jakich mechanizmów logowania używał ten 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 konsoli Firebase (otwórz kartę Security (Zabezpieczenia) > Authentication (Uwierzytelnianie) > Sign-in method (Metoda logowania)). |
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 można wyświetlić użytkownikowi. |
signOut:
| Kod |
Znaczenie |
FIRAuthErrorCodeKeychainError |
Wskazuje, że podczas uzyskiwania dostępu do pęku kluczy wystąpił błąd. Pola NSLocalizedFailureReasonErrorKey i NSUnderlyingErrorKey w słowniku NSError.userInfo będą zawierać więcej informacji o napotkanym błędzie. |
FIRUser
Typowe błędy operacji 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łączone w konsoli Firebase (otwórz kartę Security > Authentication > Users). |
reauthenticateWithCredential:completion:
| Kod |
Znaczenie |
FIRAuthErrorCodeInvalidCredential |
Wskazuje, że podane dane logowania są nieprawidłowe. Może się tak zdarzyć, jeśli dane logowania wygasły lub są nieprawidłowe. |
FIRAuthErrorCodeInvalidEmail |
Wskazuje, że adres e-mail jest nieprawidłowy, 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żytkownika, który nie jest bieżącym użytkownikiem. |
FIRAuthErrorCodeOperationNotAllowed |
Wskazuje, że konta u dostawcy tożsamości reprezentowanego przez dane logowania nie są włączone. Włącz je w konsoli Firebase (otwórz Security > Authentication). |
FIRAuthErrorCodeEmailAlreadyInUse |
Wskazuje, że adres e-mail potwierdzony przez dane logowania (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 w przypadku adresu e-mail tego użytkownika, a następnie poproś go o zalogowanie się za pomocą jednego z zwróconych dostawców logowania. Ten błąd zostanie zgłoszony tylko wtedy, gdy w konsoli Firebase włączona jest opcja „One account per email address” (Jedno konto na adres e-mail) (otwórz kartę Security (Zabezpieczenia) > Authentication (Uwierzytelnianie) > Settings (Ustawienia)). |
FIRAuthErrorCodeUserDisabled |
Wskazuje, że konto użytkownika jest wyłączone. |
updateEmail:completion:
| Kod |
Znaczenie |
FIRAuthErrorCodeEmailAlreadyInUse |
Wskazuje, że adres e-mail jest już używany przez inne konto. |
FIRAuthErrorCodeInvalidEmail |
Wskazuje, że adres e-mail jest nieprawidłowy. |
FIRAuthErrorCodeRequiresRecentLogin |
Aktualizowanie adresu e-mail użytkownika to operacja wymagająca zachowania bezpieczeństwa, która wymaga niedawnego zalogowania się użytkownika. Ten błąd wskazuje, że użytkownik nie zalogował się wystarczająco niedawno. Aby rozwiązać ten problem, ponownie uwierzytelnij użytkownika, wywołując reauthenticateWithCredential:completion: w FIRUser. |
updatePassword:completion:
| Kod |
Znaczenie |
FIRAuthErrorCodeOperationNotAllowed |
Wskazuje, że administrator wyłączył logowanie za pomocą określonego dostawcy tożsamości. |
FIRAuthErrorCodeRequiresRecentLogin |
Aktualizowanie hasła użytkownika to operacja wymagająca zachowania bezpieczeństwa, która wymaga niedawnego zalogowania się użytkownika. Ten błąd wskazuje, że użytkownik nie zalogował się wystarczająco niedawno. Aby rozwiązać ten problem, ponownie uwierzytelnij użytkownika, wywołując reauthenticateWithCredential:completion: w 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 można wyświetlić użytkownikowi. |
linkWithCredential:completion:
| Kod |
Znaczenie |
FIRAuthErrorCodeProviderAlreadyLinked |
Wskazuje próbę połączenia dostawcy typu, który jest już połączony 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 u dostawcy tożsamości reprezentowanego przez dane logowania nie są włączone. Włącz je w konsoli Firebase (otwórz kartę Security (Zabezpieczenia) > Authentication (Uwierzytelnianie) > Sign-in method (Metoda logowania)). |
Ta metoda może też zwracać kody błędów powiązane z
updateEmail:completion: i
updatePassword:completion: w FIRUser.
unlinkFromProvider: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 wymagająca zachowania bezpieczeństwa, która wymaga niedawnego zalogowania się użytkownika. Ten błąd wskazuje, że użytkownik nie zalogował się wystarczająco niedawno. Aby rozwiązać ten problem, ponownie uwierzytelnij użytkownika, wywołując reauthenticateWithCredential:completion: w FIRUser. |
sendEmailVerificationWithCompletion:
| Kod |
Znaczenie |
FIRAuthErrorCodeUserNotFound |
Wskazuje, że nie znaleziono konta użytkownika. |
deleteWithCompletion:
| Kod |
Znaczenie |
FIRAuthErrorCodeRequiresRecentLogin |
Usuwanie konta użytkownika to operacja wymagająca zachowania bezpieczeństwa, która wymaga niedawnego zalogowania się użytkownika. Ten błąd wskazuje, że użytkownik nie zalogował się wystarczająco niedawno. Aby rozwiązać ten problem, ponownie uwierzytelnij użytkownika, wywołując reauthenticateWithCredential:completion: w FIRUser. |