Обработка ошибок аутентификации платформ Apple Firebase

Если обратный вызов завершения для методов проверки подлинности получает аргумент NSError , который не равен нулю, произошла ошибка. Чтобы отправить соответствующую логику обработки ошибок в производственном коде, проверьте код ошибки на наличие распространенных ошибок и ошибок, характерных для метода, перечисленных ниже.

Некоторые ошибки можно устранить с помощью определенных действий пользователя, например, FIRAuthErrorCodeUserTokenExpired можно устранить, снова войдя в систему, а FIRAuthErrorCodeWrongPassword — запросив у пользователя правильный пароль.

За исключением случаев FIRAuthErrorCodeNetworkError или FIRAuthErrorCodeTooManyRequests , повтор неудачной операции с теми же аргументами никогда не увенчается успехом. Не делайте предположений о том, вступила ли операция в силу на стороне сервера.

При расследовании или регистрации ошибок просмотрите словарь userInfo . FIRAuthErrorNameKey содержит кросс-платформенную строку имени ошибки, которую можно использовать для идентификации ошибки. NSLocalizedDescriptionKey содержит описание ошибки. Это описание предназначено для разработчика, а не пользователя. NSUnderlyingErrorKey содержит базовую ошибку, вызвавшую рассматриваемую ошибку, если базовая ошибка присутствует.

В дополнение к основным полям, перечисленным выше, в словаре userInfo могут быть и другие поля, которые могут оказаться полезными при диагностике ошибок.

Коды ошибок, общие для всех методов API

Код Значение
FIRAuthErrorCodeNetworkError Указывает на сетевую ошибку, возникшую во время операции.
FIRAuthErrorCodeUserNotFound Указывает, что учетная запись пользователя не найдена. Это может произойти, если учетная запись пользователя была удалена.
FIRAuthErrorCodeUserTokenExpired Указывает, что срок действия токена текущего пользователя истек, например, пользователь мог изменить пароль учетной записи на другом устройстве. Вы должны предложить пользователю снова войти в систему на этом устройстве.
FIRAuthErrorCodeTooManyRequests Указывает, что запрос был заблокирован после ненормального количества запросов от вызывающего устройства к серверам аутентификации Firebase. Повторите попытку через некоторое время.
FIRAuthErrorCodeInvalidAPIKey Указывает, что приложение настроено с использованием недопустимого ключа API.
FIRAuthErrorCodeAppNotAuthorized Указывает, что приложению не разрешено использовать аутентификацию Firebase с предоставленным ключом API. перейдите в консоль Google API и проверьте на вкладке учетных данных, что ключ API, который вы используете, имеет идентификатор пакета вашего приложения в белом списке.
FIRAuthErrorCodeKeychainError Указывает, что произошла ошибка при доступе к связке ключей. NSLocalizedFailureReasonErrorKey и NSUnderlyingErrorKey в словаре NSError.userInfo будут содержать дополнительные сведения об обнаруженной ошибке.
FIRAuthErrorCodeInternalError Указывает, что произошла внутренняя ошибка. Сообщите об ошибке со всем объектом NSError .

Коды ошибок, специфичные для метода

FIRAuth

fetchProvidersForEmail: завершение:

Код Значение
FIRAuthErrorCodeInvalidEmail Указывает, что адрес электронной почты имеет неверный формат.

signInWithEmail: пароль: завершение:

Код Значение
FIRAuthErrorCodeOperationNotAllowed Указывает, что учетные записи электронной почты и паролей не включены. Включите их в разделе Auth консоли Firebase .
FIRAuthErrorCodeInvalidEmail Указывает, что адрес электронной почты имеет неверный формат.
FIRAuthErrorCodeUserDisabled Указывает, что учетная запись пользователя отключена.
FIRAuthErrorCodeWrongPassword Указывает, что пользователь попытался войти с неверным паролем.

signInWithCredential: завершение:

Код Значение
FIRAuthErrorCodeInvalidCredential Указывает, что предоставленные учетные данные недействительны. Это может произойти, если срок его действия истек или он неправильно сформирован.
FIRAuthErrorCodeInvalidEmail Указывает, что адрес электронной почты имеет неверный формат, если учетные данные имеют тип EmailPasswordAuthCredential .
FIRAuthErrorCodeOperationNotAllowed Указывает, что учетные записи с поставщиком удостоверений, представленным учетными данными, не включены. Включите их в разделе Auth консоли Firebase .
FIRAuthErrorCodeEmailAlreadyInUse Указывает, что адрес электронной почты, подтвержденный учетными данными (например, адрес электронной почты в маркере доступа Facebook), уже используется существующей учетной записью, которая не может быть аутентифицирована с помощью этого метода входа. Вызовите fetchProvidersForEmail для получения адреса электронной почты этого пользователя, а затем предложите ему войти в систему с помощью любого из возвращенных поставщиков входа. Эта ошибка возникает только в том случае, если в консоли Firebase в разделе «Настройки аутентификации» включен параметр «Одна учетная запись на адрес электронной почты».
FIRAuthErrorCodeUserDisabled Указывает, что учетная запись пользователя отключена.
FIRAuthErrorCodeWrongPassword Указывает, что пользователь попытался войти с неверным паролем, если учетные данные имеют тип EmailPasswordAuthCredential .

SignInAnonymousWithCompletion:

Код Значение
FIRAuthErrorCodeOperationNotAllowed Указывает, что анонимные учетные записи не включены. Включите их в разделе Auth консоли Firebase .

SignInWithCustomToken: завершение:

Код Значение
FIRAuthErrorCodeInvalidCustomToken Указывает на ошибку проверки пользовательского токена.
FIRAuthErrorCodeCustomTokenMismatch Указывает, что учетная запись службы и ключ API принадлежат разным проектам.

createUserWithEmail: пароль: завершение:

Код Значение
FIRAuthErrorCodeInvalidEmail Указывает, что адрес электронной почты имеет неверный формат.
FIRAuthErrorCodeEmailAlreadyInUse Указывает, что адрес электронной почты, использованный для попытки регистрации, уже существует. Вызовите fetchProvidersForEmail , чтобы проверить, какие механизмы входа использовал этот пользователь, и предложите пользователю войти с помощью одного из них.
FIRAuthErrorCodeOperationNotAllowed Указывает, что учетные записи электронной почты и паролей не включены. Включите их в разделе Authentication консоли Firebase .
FIRAuthErrorCodeWeakPassword Указывает на попытку установить пароль, который считается слишком слабым. Поле NSLocalizedFailureReasonErrorKey в объекте словаря NSError.userInfo будет содержать более подробное объяснение, которое может быть показано пользователю.

выход:

Код Значение
FIRAuthErrorCodeKeychainError Указана ошибка при доступе к связке ключей. NSLocalizedFailureReasonErrorKey и NSUnderlyingErrorKey в словаре NSError.userInfo будут содержать дополнительные сведения об обнаруженной ошибке.

FIRUser

Распространенные ошибки для операций FIRUser

Код Значение
FIRAuthErrorCodeInvalidUserToken Указывает, что маркер обновления вошедшего пользователя, который содержит информацию о сеансе, недействителен. Вы должны предложить пользователю снова войти в систему на этом устройстве.
FIRAuthErrorCodeUserDisabled Указывает, что учетная запись пользователя отключена и больше не может использоваться до тех пор, пока снова не будет включена на панели «Пользователи» в консоли Firebase.

повторная проверка подлинности с учетными данными: завершение:

Код Значение
FIRAuthErrorCodeInvalidCredential Указывает, что предоставленные учетные данные недействительны. Это может произойти, если срок его действия истек или он неправильно сформирован.
FIRAuthErrorCodeInvalidEmail Указывает, что адрес электронной почты имеет неверный формат, если учетные данные имеют тип EmailPasswordAuthCredential .
FIRAuthErrorCodeWrongPassword Указывает на попытку повторной аутентификации пользователя с неправильным паролем, если учетные данные имеют тип EmailPasswordAuthCredential .
FIRAuthErrorCodeUserMismatch Указывает, что была предпринята попытка повторной аутентификации с пользователем, который не является текущим пользователем.
FIRAuthErrorCodeOperationNotAllowed Указывает, что учетные записи с поставщиком удостоверений, представленным учетными данными, не включены. Включите их в разделе Auth консоли Firebase .
FIRAuthErrorCodeEmailAlreadyInUse Указывает, что адрес электронной почты, подтвержденный учетными данными (например, адрес электронной почты в маркере доступа Facebook), уже используется существующей учетной записью, которую нельзя повторно аутентифицировать с помощью этого метода входа. Вызовите fetchProvidersForEmail для получения адреса электронной почты этого пользователя, а затем предложите ему войти в систему с помощью любого из возвращенных поставщиков входа. Эта ошибка возникает только в том случае, если в консоли Firebase в разделе «Настройки аутентификации» включен параметр «Одна учетная запись на адрес электронной почты».
FIRAuthErrorCodeUserDisabled Указывает, что учетная запись пользователя отключена.

updateЭлектронная почта: завершение:

Код Значение
FIRAuthErrorCodeEmailAlreadyInUse Указывает, что электронная почта уже используется другой учетной записью.
FIRAuthErrorCodeInvalidEmail Указывает, что адрес электронной почты имеет неверный формат.
FIRAuthErrorCodeRequiresRecentLogin Обновление электронной почты пользователя является важной операцией с точки зрения безопасности, для которой требуется недавний вход пользователя в систему. Эта ошибка указывает на то, что пользователь не входил в систему достаточно давно. Для решения повторно аутентифицируйте пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser .

пароль обновления: завершение:

Код Значение
FIRAuthErrorCodeOperationNotAllowed Указывает, что администратор отключил вход с указанным поставщиком удостоверений.
FIRAuthErrorCodeRequiresRecentLogin Обновление пароля пользователя является важной операцией с точки зрения безопасности, для которой требуется недавний вход пользователя в систему. Эта ошибка указывает на то, что пользователь не входил в систему достаточно давно. Для решения повторно аутентифицируйте пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser .
FIRAuthErrorCodeWeakPassword Указывает на попытку установить пароль, который считается слишком слабым. Поле NSLocalizedFailureReasonErrorKey в объекте словаря NSError.userInfo будет содержать более подробное объяснение, которое может быть показано пользователю.

ссылка с учетными данными: завершение:

Код Значение
FIRAuthErrorCodeProviderAlreadyLinked Указывает на попытку связать поставщика типа, который уже связан с этой учетной записью.
FIRAuthErrorCodeCredentialAlreadyInUse Указывает на попытку связать учетные данные, которые уже были связаны с другой учетной записью Firebase.
FIRAuthErrorCodeOperationNotAllowed Указывает, что учетные записи с поставщиком удостоверений, представленным учетными данными, не включены. Включите их в разделе Auth консоли Firebase .

Этот метод также может возвращать коды ошибок, связанные с updateEmail:completion: и updatePassword:completion: на FIRUser .

unlinkFromProvider: завершение:

Код Значение
FIRAuthErrorCodeNoSuchProvider Указывает на попытку отключить поставщика, который не связан с учетной записью.
FIRAuthErrorCodeRequiresRecentLogin Обновление электронной почты является важной операцией с точки зрения безопасности, для которой требуется недавний вход пользователя в систему. Эта ошибка указывает на то, что пользователь не входил в систему достаточно давно. Для решения повторно аутентифицируйте пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser .

sendEmailVerificationWithCompletion:

Код Значение
FIRAuthErrorCodeUserNotFound Указывает, что учетная запись пользователя не найдена.

удалить с завершением:

Код Значение
FIRAuthErrorCodeRequiresRecentLogin Удаление учетной записи пользователя является важной операцией с точки зрения безопасности, для которой требуется недавний вход пользователя в систему. Эта ошибка указывает на то, что пользователь не входил в систему достаточно давно. Для решения повторно аутентифицируйте пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser .