Если обратный вызов завершения для методов Authentication получает аргумент NSError, который не является нулевым, значит произошла ошибка. Чтобы в рабочем коде можно было использовать подходящую логику обработки ошибок, проверьте код ошибки на наличие распространенных ошибок и ошибок, связанных с определенным методом, которые перечислены ниже.
Некоторые ошибки можно устранить, выполнив определенные действия. Например, ошибку FIRAuthErrorCodeUserTokenExpired можно исправить, повторно выполнив вход в аккаунт, а ошибку FIRAuthErrorCodeWrongPassword – попросив пользователя ввести правильный пароль.
За исключением случаев FIRAuthErrorCodeNetworkError или FIRAuthErrorCodeTooManyRequests, повторная попытка выполнить операцию с теми же аргументами никогда не будет успешной. Не предполагайте, что операция выполнена на стороне сервера.
При исследовании или регистрации ошибок используйте словарь userInfo.
FIRAuthErrorNameKey содержит строку с названием ошибки, которая может использоваться для ее идентификации на разных платформах.
NSLocalizedDescriptionKey содержит описание ошибки. Это описание предназначено для разработчика, а не для пользователя.
NSUnderlyingErrorKey содержит основную ошибку, которая вызвала ошибку в вопросе, если основная ошибка присутствует.
Помимо основных полей, перечисленных выше, в словаре userInfo могут быть и другие поля, которые могут быть полезны при диагностике ошибок.
Коды ошибок, общие для всех методов API
| Код |
Значение |
FIRAuthErrorCodeNetworkError |
Указывает на то, что во время операции произошла ошибка сети. |
FIRAuthErrorCodeUserNotFound |
Указывает, что аккаунт пользователя не найден. Это может произойти, если аккаунт пользователя был удален. |
FIRAuthErrorCodeUserTokenExpired |
Указывает, что срок действия токена текущего пользователя истек. Например, пользователь мог изменить пароль аккаунта на другом устройстве. Пользователю нужно будет снова войти в аккаунт на этом устройстве. |
FIRAuthErrorCodeTooManyRequests |
Указывает, что запрос был заблокирован после того, как вызывающее устройство отправило на серверы Firebase Authentication аномально большое количество запросов. Повторите попытку позже. |
FIRAuthErrorCodeInvalidAPIKey |
Указывает, что в приложении настроен недействительный ключ API. |
FIRAuthErrorCodeAppNotAuthorized |
Указывает, что приложению не разрешено использовать аутентификацию Firebase с предоставленным ключом API. Откройте Google API Console и на вкладке "Учетные данные" убедитесь, что идентификатор пакета вашего приложения добавлен в белый список ключа API, который вы используете. |
FIRAuthErrorCodeKeychainError |
Указывает на ошибку при доступе к цепочке ключей. В полях NSLocalizedFailureReasonErrorKey и NSUnderlyingErrorKey словаря NSError.userInfo будет указана дополнительная информация об ошибке. |
FIRAuthErrorCodeInternalError |
Указывает на то, что произошла внутренняя ошибка. Сообщите об ошибке, приложив весь объект NSError. |
Коды ошибок для определенных методов
FIRAuth
fetchProvidersForEmail:completion:
| Код |
Значение |
FIRAuthErrorCodeInvalidEmail |
Указывает на то, что адрес электронной почты имеет неверный формат. |
signInWithEmail:password:completion:
| Код |
Значение |
FIRAuthErrorCodeOperationNotAllowed |
Указывает, что аккаунты с адресом электронной почты и паролем не включены. Включите их в консоли Firebase (перейдите на вкладку Безопасность > Аутентификация > Способ входа). |
FIRAuthErrorCodeInvalidEmail |
Указывает на то, что адрес электронной почты имеет неверный формат. |
FIRAuthErrorCodeUserDisabled |
Указывает, что аккаунт пользователя отключен. |
FIRAuthErrorCodeWrongPassword |
Показывает, что пользователь попытался войти в аккаунт с неверным паролем. |
signInWithCredential:completion:
| Код |
Значение |
FIRAuthErrorCodeInvalidCredential |
Указывает, что предоставленные учетные данные недействительны. Это может произойти, если срок действия сертификата истек или он поврежден. |
FIRAuthErrorCodeInvalidEmail |
Указывает, что адрес электронной почты имеет неверный формат, если учетные данные относятся к типу EmailPasswordAuthCredential. |
FIRAuthErrorCodeOperationNotAllowed |
Указывает, что аккаунты с поставщиком идентификационной информации, представленным учетными данными, не включены. Включите их в консоли Firebase (перейдите на вкладку Безопасность > Аутентификация > Способ входа). |
FIRAuthErrorCodeEmailAlreadyInUse |
Указывает, что адрес электронной почты, заявленный учетными данными (например, адрес электронной почты в токене доступа Facebook), уже используется существующим аккаунтом, который нельзя аутентифицировать с помощью этого способа входа. Вызовите fetchProvidersForEmail для адреса электронной почты этого пользователя, а затем предложите ему войти в систему с помощью любого из возвращенных поставщиков услуг входа. Эта ошибка возникает только в том случае, если в консоли Firebase включена настройка "Один аккаунт на адрес электронной почты" (Безопасность > Аутентификация > вкладка Настройки). |
FIRAuthErrorCodeUserDisabled |
Указывает, что аккаунт пользователя отключен. |
FIRAuthErrorCodeWrongPassword |
Указывает, что пользователь попытался войти в аккаунт с неверным паролем, если учетные данные относятся к типу EmailPasswordAuthCredential. |
signInAnonymouslyWithCompletion:
| Код |
Значение |
FIRAuthErrorCodeOperationNotAllowed |
Указывает, что анонимные аккаунты не включены. Включите их в консоли Firebase (перейдите на вкладку Безопасность > Аутентификация > Способ входа). |
signInWithCustomToken:completion:
| Код |
Значение |
FIRAuthErrorCodeInvalidCustomToken |
Указывает на ошибку проверки собственного токена. |
FIRAuthErrorCodeCustomTokenMismatch |
Указывает, что сервисный аккаунт и ключ API относятся к разным проектам. |
createUserWithEmail:password:completion:
| Код |
Значение |
FIRAuthErrorCodeInvalidEmail |
Указывает на то, что адрес электронной почты имеет неверный формат. |
FIRAuthErrorCodeEmailAlreadyInUse |
Указанный адрес электронной почты уже используется. Вызовите метод fetchProvidersForEmail, чтобы проверить, какие способы входа использовал пользователь, и предложите ему войти одним из этих способов. |
FIRAuthErrorCodeOperationNotAllowed |
Указывает, что аккаунты с адресом электронной почты и паролем не включены. Включите их в консоли Firebase (перейдите на вкладку Безопасность > Аутентификация > Способ входа). |
FIRAuthErrorCodeWeakPassword |
Попытка задать слишком простой пароль. В поле NSLocalizedFailureReasonErrorKey объекта словаря NSError.userInfo будет содержаться более подробное объяснение, которое можно показать пользователю. |
signOut:
| Код |
Значение |
FIRAuthErrorCodeKeychainError |
Указывает на ошибку при доступе к цепочке ключей. В полях NSLocalizedFailureReasonErrorKey и NSUnderlyingErrorKey словаря NSError.userInfo будет указана дополнительная информация об ошибке. |
FIRUser
Распространенные ошибки при работе с FIRUser
| Код |
Значение |
FIRAuthErrorCodeInvalidUserToken |
Указывает, что токен обновления вошедшего в аккаунт пользователя, в котором хранится информация о сеансе, недействителен. Пользователю нужно будет снова войти в аккаунт на этом устройстве. |
FIRAuthErrorCodeUserDisabled |
Указывает, что аккаунт пользователя отключен и его нельзя использовать, пока он не будет снова включен в консоли Firebase (перейдите на вкладку Безопасность > Аутентификация > Пользователи). |
reauthenticateWithCredential:completion:
| Код |
Значение |
FIRAuthErrorCodeInvalidCredential |
Указывает, что предоставленные учетные данные недействительны. Это может произойти, если срок действия сертификата истек или он поврежден. |
FIRAuthErrorCodeInvalidEmail |
Указывает, что адрес электронной почты имеет неверный формат, если учетные данные относятся к типу EmailPasswordAuthCredential. |
FIRAuthErrorCodeWrongPassword |
Указывает, что пользователь попытался повторно пройти аутентификацию с неверным паролем, если учетные данные имеют тип EmailPasswordAuthCredential. |
FIRAuthErrorCodeUserMismatch |
Указывает, что была предпринята попытка повторной аутентификации с пользователем, который не является текущим. |
FIRAuthErrorCodeOperationNotAllowed |
Указывает, что аккаунты с поставщиком идентификационной информации, представленным учетными данными, не включены. Включите их в консоли Firebase (выберите Безопасность > Аутентификация). |
FIRAuthErrorCodeEmailAlreadyInUse |
Указывает, что адрес электронной почты, заявленный учетными данными (например, адрес электронной почты в токене доступа Facebook), уже используется существующим аккаунтом, который нельзя повторно аутентифицировать с помощью этого способа входа. Вызовите fetchProvidersForEmail для адреса электронной почты этого пользователя, а затем предложите ему войти в систему с помощью любого из возвращенных поставщиков услуг входа. Эта ошибка возникает только в том случае, если в консоли Firebase включена настройка "Один аккаунт на адрес электронной почты" (Безопасность > Аутентификация > вкладка Настройки). |
FIRAuthErrorCodeUserDisabled |
Указывает, что аккаунт пользователя отключен. |
updateEmail:completion:
| Код |
Значение |
FIRAuthErrorCodeEmailAlreadyInUse |
Указанный адрес электронной почты уже используется в другом аккаунте. |
FIRAuthErrorCodeInvalidEmail |
Указывает на то, что адрес электронной почты имеет неверный формат. |
FIRAuthErrorCodeRequiresRecentLogin |
Изменение адреса электронной почты пользователя – это операция, связанная с безопасностью, для которой требуется недавний вход пользователя в систему. Эта ошибка означает, что пользователь давно не входил в аккаунт. Чтобы устранить проблему, повторно аутентифицируйте пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser. |
updatePassword:completion:
| Код |
Значение |
FIRAuthErrorCodeOperationNotAllowed |
Указывает, что администратор отключил вход с помощью указанного поставщика идентификационной информации. |
FIRAuthErrorCodeRequiresRecentLogin |
Изменение пароля пользователя – это операция, связанная с безопасностью, для которой требуется недавний вход пользователя в систему. Эта ошибка означает, что пользователь давно не входил в аккаунт. Чтобы устранить проблему, повторно аутентифицируйте пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser. |
FIRAuthErrorCodeWeakPassword |
Попытка задать слишком простой пароль. В поле NSLocalizedFailureReasonErrorKey объекта словаря NSError.userInfo будет содержаться более подробное объяснение, которое можно показать пользователю. |
linkWithCredential:completion:
| Код |
Значение |
FIRAuthErrorCodeProviderAlreadyLinked |
Показывает, что была попытка связать поставщика услуг, который уже связан с этим аккаунтом. |
FIRAuthErrorCodeCredentialAlreadyInUse |
Попытка связать аккаунт с учетными данными, которые уже связаны с другим аккаунтом Firebase. |
FIRAuthErrorCodeOperationNotAllowed |
Указывает, что аккаунты с поставщиком идентификационной информации, представленным учетными данными, не включены. Включите их в консоли Firebase (перейдите на вкладку Безопасность > Аутентификация > Способ входа). |
Этот метод также может возвращать коды ошибок, связанные с updateEmail:completion: и updatePassword:completion: на FIRUser.
unlinkFromProvider:completion:
| Код |
Значение |
FIRAuthErrorCodeNoSuchProvider |
Показывает, что была попытка отменить связь с поставщиком, который не связан с аккаунтом. |
FIRAuthErrorCodeRequiresRecentLogin |
Изменение адреса электронной почты – это операция, связанная с безопасностью, для которой требуется недавний вход пользователя в аккаунт. Эта ошибка означает, что пользователь давно не входил в аккаунт. Чтобы устранить проблему, повторно аутентифицируйте пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser. |
sendEmailVerificationWithCompletion:
| Код |
Значение |
FIRAuthErrorCodeUserNotFound |
Указывает, что аккаунт пользователя не найден. |
deleteWithCompletion:
| Код |
Значение |
FIRAuthErrorCodeRequiresRecentLogin |
Удаление аккаунта пользователя – это операция, связанная с безопасностью, для которой требуется недавний вход пользователя в систему. Эта ошибка означает, что пользователь давно не входил в аккаунт. Чтобы устранить проблему, повторно аутентифицируйте пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser. |