Если функция обратного вызова завершения в методах Authentication получает аргумент NSError , отличный от nil, значит, произошла ошибка. Чтобы перенаправить обработку ошибок в соответствующий код вашего рабочего процесса, сравните код ошибки с распространенными ошибками и ошибками, специфичными для метода, перечисленными ниже.
Некоторые ошибки можно устранить с помощью определенных действий пользователя. Например, FIRAuthErrorCodeUserTokenExpired можно исправить повторным входом пользователя в систему, а FIRAuthErrorCodeWrongPassword — запросив у пользователя правильный пароль.
За исключением случаев FIRAuthErrorCodeNetworkError или FIRAuthErrorCodeTooManyRequests , повторная попытка выполнения неудачной операции с теми же аргументами никогда не увенчается успехом. Не следует делать предположений о том, была ли операция выполнена на стороне сервера.
При расследовании или регистрации ошибок следует просмотреть словарь userInfo . FIRAuthErrorNameKey содержит кроссплатформенную строку имени ошибки, которую можно использовать для идентификации ошибки. NSLocalizedDescriptionKey содержит описание ошибки. Это описание предназначено для разработчика, а не для пользователя. NSUnderlyingErrorKey содержит информацию о базовой ошибке, вызвавшей данную ошибку, если таковая имеется.
Помимо основных полей, перечисленных выше, в словаре userInfo могут быть и другие поля, которые могут оказаться полезными при диагностике ошибок.
Коды ошибок, общие для всех методов API.
| Код | Значение |
|---|
FIRAuthErrorCodeNetworkError | Указывает на сетевую ошибку, произошедшую во время операции. |
FIRAuthErrorCodeUserNotFound | Указывает на то, что учетная запись пользователя не найдена. Это может произойти, если учетная запись пользователя удалена. |
FIRAuthErrorCodeUserTokenExpired | Указывает на то, что срок действия токена текущего пользователя истек, например, пользователь мог изменить пароль учетной записи на другом устройстве. Необходимо предложить пользователю повторно войти в систему на этом устройстве. |
FIRAuthErrorCodeTooManyRequests | Указывает на то, что запрос был заблокирован после того, как с вызывающего устройства было отправлено аномально большое количество запросов к серверам Firebase Authentication . Повторите попытку через некоторое время. |
FIRAuthErrorCodeInvalidAPIKey | Указывает на то, что приложение было настроено с недействительным ключом API. |
FIRAuthErrorCodeAppNotAuthorized | Это означает, что приложение не авторизовано для использования аутентификации Firebase с предоставленным ключом API. Перейдите в консоль Google API и проверьте на вкладке «Учетные данные», что используемый вами ключ 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 , это означает, что пользователь попытался войти в систему с неверным паролем. |
signInAnonymouslyWithComplete:
| Код | Значение |
|---|
FIRAuthErrorCodeOperationNotAllowed | Указывает на то, что анонимные учетные записи не включены. Включите их в консоли Firebase (перейдите в раздел Безопасность > Аутентификация > Вкладка Метод входа ). |
signInWithCustomToken:completion:
| Код | Значение |
|---|
FIRAuthErrorCodeInvalidCustomToken | Указывает на ошибку проверки пользовательского токена. |
FIRAuthErrorCodeCustomTokenMismatch | Указывает, что учетная запись службы и ключ API принадлежат разным проектам. |
createUserWithEmail:password:completion:
| Код | Значение |
|---|
FIRAuthErrorCodeInvalidEmail | Указывает на то, что адрес электронной почты указан неверно. |
FIRAuthErrorCodeEmailAlreadyInUse | Указывает, что адрес электронной почты, использованный для попытки регистрации, уже существует. Вызовите функцию fetchProvidersForEmail , чтобы проверить, какие механизмы входа в систему использовал данный пользователь, и предложите пользователю войти в систему с помощью одного из них. |
FIRAuthErrorCodeOperationNotAllowed | Указывает на то, что учетные записи электронной почты и пароля не включены. Включите их в консоли Firebase (перейдите в раздел Безопасность > Аутентификация > Вкладка Метод входа ). |
FIRAuthErrorCodeWeakPassword | Указывает на попытку установить пароль, который считается слишком слабым. Поле NSLocalizedFailureReasonErrorKey в объекте словаря NSError.userInfo будет содержать более подробное объяснение, которое может быть показано пользователю. |
выход:
| Код | Значение |
|---|
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 . |
sendEmailVerificationWithComplete:
| Код | Значение |
|---|
FIRAuthErrorCodeUserNotFound | Указывает на то, что учетная запись пользователя не найдена. |
deleteWithComplete:
| Код | Значение |
|---|
FIRAuthErrorCodeRequiresRecentLogin | Удаление учетной записи пользователя — это операция, требующая недавнего входа пользователя в систему. Эта ошибка указывает на то, что пользователь входил в систему недостаточно давно. Для решения проблемы выполните повторную аутентификацию пользователя, вызвав reauthenticateWithCredential:completion: в FIRUser . |